Quel est l'équivalent du code Excel suivant dans VBA?

=MATCH(A1,Ranged_Name,0)

Où Ranged_Name est un nom à distance au niveau du classeur.

0
Garry W 20 nov. 2018 à 21:30

3 réponses

Meilleure réponse

Dans une cellule de feuille de calcul et VBA:

Sub dural()
    MsgBox Evaluate("Match(A1,Range_Name,0)")
End Sub

enter image description here

MODIFIER # 1:

Sur la base des commentaires, une meilleure alternative:

Sub dural()
    Dim r1 As Range, r2 As Range, v As Variant, wf As WorksheetFunction

    Set r1 = Sheets("Sheet1").Range("A1")
    Set r2 = Range("Range_Name")
    Set wf = Application.WorksheetFunction

    v = wf.Match(r1, r2, 0)
    MsgBox v
End Sub

Et pour utiliser Find():

Sub larud()
    Dim r1 As Range, r2 As Range, v As Variant

    Set r1 = Sheets("Sheet1").Range("A1")
    Set r2 = Range("Range_Name")

    v = r2.Find(What:=r1.Value, After:=r2(1)).Row

    MsgBox v
End Sub
1
Gary's Student 21 nov. 2018 à 14:13

Vous pouvez utiliser Range (). Find ou Evaluez () votre correspondance, si la feuille est ActiveSheet.

1
Patrick Honorez 20 nov. 2018 à 18:37

Pour en ajouter un de plus:

Dim r
With Activesheet
    r = Application.Match(.Range("A1").Value, Range("Ranged_Name"), 0)
End with

If Not IsError(r) Then
    'got a match
End If
4
Tim Williams 20 nov. 2018 à 18:53