2017-08-18 1 views
0

Ich versuche, einen Wert für eine Spalte und einen Wert in einer Zeile zu erhalten.Ich versuche, MATCH vba Excel

Ich tat dies und es funktioniert:

linha = Application.WorksheetFunction.Match(nome, Sheets(2).Range("a:a"), 0) 

Aber wenn ich dies tun, ist es nicht funktionieren. Nehme an den gleichen Code sein (Fehler 1004)

x = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row 
linha2 = Application.WorksheetFunction.Match(nome, Sheets(2).Range(Cells(1, 1), Cells(x, 1)), 0) 

Antwort

0

Das ist nicht, weil nicht funktioniert, wenn Sie das Range-Objekt mit Blattbezug qualifizieren, müssen Sie auch die qualifizieren Zellen mit der Sheet-Referenz.

es so probieren ...

linha2 = Application.WorksheetFunction.Match(nome, Sheets(2).Range(Sheets(2).Cells(1, 1), Sheets(2).Cells(x, 1)), 0) 
+0

danken Sie ".Range (Sheets (2) .Cells (1, 1), Sheets (2) .Cells (x, 1)" bearbeitet –

+0

@GabrielLemos Gern geschehen! Froh, es hat funktioniert. :) – sktneer

0

Zwei Dinge:

Wenn nome nicht im Bereich fand es Fehler, also müssen wir einige Fehlerbehandlung.

Sie müssen die Abstammungs zu den Zellen() innerhalb der Range() hinzufügen:

Dim linha2 As Long 
Dim x As Long 
linha2 = 0 
x = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row 
On Error Resume Next 
    linha2 = Application.WorksheetFunction.Match(nome, Sheets(2).Range(Sheets(2).Cells(1, 1), Sheets(2).Cells(x, 1)), 0) 
On Error GoTo 0 
If linha2 = 0 Then 
    MsgBox nome & " not found in range" 
Else 
    'do what you want with linha2 
End If 
+0

Danke ".Range (Sheets (2) .Cells (1, 1), Bettwäsche (2) .Cells (x, 1)" gearbeitet –