2016-05-31 12 views
1

Wenn ich dieses vba sub ausführen, sind die Werte, die von find in den Variablen Temp1 und Search zurückgegeben werden, der Inhalt der Zelle, keine Bereichsvariable mit der Zelladresse.Excel 2010 vba "find" -Funktion gibt den Inhalt zurück

Der Code ist hier:

Sub updateFDFList(Fname As String)  
    ' Check for worksheet existence 

    'last filled row 
    Dim lastLine As Long 
    lastLine = Worksheets("FDFFiles").Range("A" & Rows.Count).End(xlUp).row 

    If lastLine = 1 Then 
    'List Is Empty 
    Worksheets("FDFFiles").Cells(2, 1).Value = Fname 
    Worksheets("FDFFiles").Cells(2, 2).Value = "No" 
    Else 
    'Search column A for match 
    Dim Search As Range 
    S1 = "A2:A" & lastLine 
    With Range(S1) 
     Temp1 = .Find(Fname) 
     Search = .Find(Fname, LookAt:=xlWhole, MatchCase:=True) 
     If Search Is Nothing Then 
      Dim newLine 
      newLine = lastLine + 1 
      Worksheets("FDFFiles").Cells(newLine, 1).Value = Fname 
      Worksheets("FDFFiles").Cells(newLine, 2).Value = "No" 
     End If 
     End With 
    End If 
End Sub 
+3

Sie müssen Objekte Set Bereich: 'Set Suche = .Find (Fname, LookAt: = xlWhole, MatchCase: = True) ' –

Antwort

1

Nachdem Sie die das Range Objekt deklariert Sie es mit dem Set Schlüsselwort instanziieren müssen.

Hier ist eine gute und einfache Beschreibung: http://www.excel-easy.com/vba/range-object.html

Dies sagt:

Deklarieren Sie ein Range-Objekt
Sie können mit Hilfe der Schlüsselwörter Dim und Set ein Range-Objekt deklarieren.

Ohne die Set, gibt es die Value der Zelle zurück.

Die Antwort auf diese Frage, erklärt sie im Detail: vba simple range/object error

Und hier ist die vollständige Liste mit Beispielen aus Msdn: https://msdn.microsoft.com/en-us/library/office/ff838238.aspx

+0

Vielen Dank für Ihre Hilfe –