VBA "Find" in UDF
27.08.2004 09:06:37
Frank
Problem:
Ich habe eine benutzerdefinerte Funktion geschrieben, die den FIND-Befehl benutzt.
Aus Codenummern in mehreren Zellen sollen die Klartexte zu den Codenummern mehrzeilig in einer Zelle ausgegeben werden.
Anfangs funktionierte diese UDF, danach lieferte der FIND-Befehl immer "nothing" als Resultat.
Als "Sub" geschrieben mit Wertevorgaben innerhalb der "Sub" funktionierts.
Mit dem Debugger sehe ich die gleichen Startwerte für den FIND-Befehl, egal ob als "Sub" oder als "Function" getestet.
Andere Anwender benutzen diese Excel-Datei auch. Kein Schreibschutz.
Spielt die Formatierung der Codenummern eine Rolle?
Welche VBA-Verweise sind erforderlich?
- Microsoft Office 8.0 Objekt Library ist aktiviert.
Wo finde ich Hinweise zu notwendigen Verweisen?
Vielen Dank all denen, die sich für mein Problem Zeit nehmen
von Frank
Aufruf im Tabellenblatt:
=FehlerText(ZS21:ZS25;"Fehlercode")
Hier der Code der Funktion:
Function FehlerText(BereichCodeNr As Range, CodeListe As String) As String
'-- liefert mehrzeiligen Klartext zu Codenummern aus einem mehrzelligen Bereich
' CodeListe ist der Tabellenname mit dem Fehlercode (Spalte 1) und dem Fehlertext (Spalte 2)
' BereichCodeNr ist der Bereich, der die auszuwertenden Zellen mit Codenummern enthält
Dim varTemp As Variant, strMessage As String
Dim c As Variant, varCell As Variant
Dim blnFirstValue As Boolean
Dim strOut As String
blnFirstValue = True
For Each c In BereichCodeNr
varTemp = Trim(c.Value)
If Len(varTemp) > 0 Then ' leere Zellen möglich
If Not blnFirstValue Then strOut = strOut & Chr(10) ' nicht vor dem erstem Wert
With ThisWorkbook.Worksheets(CodeListe).Cells(1, 1).EntireColumn
Set varCell = .Find(What:=varTemp, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows)
If Not varCell Is Nothing Then
strMessage = .Cells(varCell.Row, 2).Value
blnFirstValue = False
End If
End With
strOut = strOut & strMessage
End If
Next c
FehlerText = strOut
End Function