Ich möchte mir eine Funktion schreiben die mir in einer matrix gefundene werte verkettet.
Die versuchs tabelle sieht so aus.
Tabelle1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der code zu der funktion sverweis2() ist dieser hier:
Public Function sverweis2(kriterium, bereich As Range, versatz As Integer, Optional trenner As String) As String
Dim wert As String
Dim c
Dim firstaddress As String
wert = ""
With bereich
Set c = .Find(what:=kriterium, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns, searchdirection:=xlNext)
If Not c Is Nothing Then
firstaddress = c.Address
Do
wert = wert & c.Offset(0, versatz) & trenner
Set c = .FindNext(c)
'hier wird die function einfach verlassen, wenn ich mit F8 durchgehe.
Loop While Not c Is Nothing And c.Address <> firstaddress
End If
End With
sverweis2 = wert
End Function
nur leider mag er nicht so wie ich es gerne hätte.
In der auskommentierten zeile wird die funtion einfach verlassen.
Das ganze vergleichsweise als sub() angelegt funktioniert.
Public Sub test()
Dim c As Range
Dim firstaddress As String
Dim trenner As String
Dim wert As String
Dim bereich As Range
Set bereich = Range("a1:a30")
trenner = ":"
wert = ""
With bereich
Set c = .Find(what:="a", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns, searchdirection:=xlNext)
If Not c Is Nothing Then
firstaddress = c.Address
Do
wert = wert & c.Offset(0, 1) & trenner
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstaddress
End If
End With
MsgBox wert
End Sub
Ich könnte den bereich auch mit:
For each zelle in bereich
if zelle=kriterium then...
next
abklappern, fürchte aber das das dann bei größeren bereichen zu langsam wird.
Kann mir da mal jemand hilfreich zur seite stehen und sagen was da in der funktion klemmt?
ransi