2017-08-18 6 views
0

J'essaie d'obtenir une valeur sur une colonne et une valeur sur une ligne.Tentative d'utilisation de MATCH vba excel

Je l'ai fait et il fonctionne:

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

Mais si je fais ça, il ne fonctionne pas. Supose être le même code (erreur 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) 

Répondre

0

Cela ne fonctionne pas parce que si vous êtes admissible à l'objet Range en référence de la feuille, vous devez aussi qualifier le Cellules avec la référence Sheet.

Essayez comme ça ...

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

merci vous ".Range (Sheets (2) .Cells (1, 1), Sheets (2) .Cells (x, 1)" travaillé –

+0

@GabrielLemos De rien! Heureux que cela a fonctionné. :) – sktneer

0

Deux choses:

Si nome ne se trouve pas dans la plage il erreur, donc nous avons besoin d'une certaine gestion des erreurs.

Vous devez ajouter la filiation aux cellules() dans la gamme():

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

merci ".Range (Sheets (2) .Cells (1, 1), Sheets (2) .Cells (x, 1)" A travaillé –