2017-06-19 2 views
0

Ich versuche, eine Funktion zu erstellen, die:Funktion durch alle Arbeitsblätter in einer Schleife finden Wert, Return Arbeitsblatt Name

  • in einer Zelle als Parameter
  • Sieht aus, um zu sehen, ob die Zelle in ist Eine Säule
    • Wenn dies zutrifft, geben Sie den Arbeitsblatt-Namen
    • Wenn nicht, geht in die nächste Arbeitsblatt und versucht es erneut

ich ein paar verschiedene Möglichkeiten versucht haben, aber ich kann es nicht zu arbeiten. Derzeit ist dies, wo ich bin an:

Option Explicit 

Public Function codeLookup(cellOne) 

    Dim ws As Worksheet 
    Dim findValue As Boolean 

    With WorksheetFunction 
     findValue = .VLookup(cellOne, ws.Range("A:A"), 1) 
    End With 

    For Each ws In ActiveWorkbook.Worksheets 
     If findValue = True Then 
     codeLookup = Application.Caller.Worksheet.Name 
     End If 
     Next 

End Function 

Danke

Antwort

2

Versuchen it-

Public Function codeLookup(cellOne) 

Dim ws As Worksheet 
Dim findValue As Variant 

On Error Resume Next 
For Each ws In ActiveWorkbook.Worksheets 
findValue = WorksheetFunction.VLookup(cellOne, ws.Range("A:A"), 1) 
    If findValue <> "" Then 
    codeLookup = ws.Name 
    Exit Function 
    End If 
Next 

End Function 
+1

Danke, ich war immer näher, wenn Sie diese vorgelegt und sah einige einfache Fehler in meinem Code (wie nicht die vlookup Funktion tun rechts). Ich war aber immer noch ein bisschen daneben; Du hast mir sehr geholfen. –

1

Sie könnten auch die Range.Find Funktion verwenden. (Ich weiß nicht, was schneller ist)

Zum Beispiel:

Public Function codeLookup(cellOne) As String 

    Dim ws As Worksheet 
    Dim searchRange As Range 

    For Each ws In ActiveWorkbook.Worksheets 
     Set searchRange = ws.Columns(1).Find(what:=cellOne, LookIn:=xlValues) 
     If Not searchRange Is Nothing Then 
      codeLookup = ws.Name 
      Exit Function 
     End If 
    Next 
    codeLookup = "No match found" 
End Function 
+0

Danke, ich mag es, andere Möglichkeiten zu sehen, es zu schreiben; Es hilft, die Struktur des Codes zu verstehen. Ich mag, dass auf diese Weise eine "No Match Found" -Option anstelle einer 0 zurückgegeben wird. –

Verwandte Themen