web-dev-qa-db-fra.com

Comment utiliser une référence indirecte pour sélectionner une seule cellule ou une plage dans vba

J'ai simplement besoin d'un code pour sélectionner une cellule, mais cette cellule pour sélectionner des modifications. J'ai une cellule dans le classeur qui identifiera quelle cellule elle devrait être. La cellule A1 contient le numéro de cellule à sélectionner. 

Dans cet exemple, la cellule A1 contient le mot "P25". Par conséquent, je souhaite que le code ci-dessous fasse référence à A1 pour la référence de cellule indirecte à P25; sélectionnez donc la cellule P25. 

J'ai essayé ces deux lignes séparément:

Sub IndirectCellSelect()

     Sheet.Range(INDIRECT(A1)).Select
     Range(INDIRECT(A1)).Select

End Sub

J'obtiens l'erreur Sub ou Function n'est pas défini, quand il arrive au mot INDIRECT 

5
Bryan

Une légère modification du code affiché fonctionne: 

Range([indirect("a1")]).Select

mais je conseillerais d'essayer l'un ou l'autre à la place:

Sheet.Range(Sheet.Range("A1").Value).Select
Range(Range("A1")).Select

le premier étant plus explicite et recommandé dans le code de production.

3
lori_m
Worksheets("list").Sort.SortFields.Add Key:=Range(INDIRECT("I16" & "3" & ":" & "I16" & "5002")) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With Worksheets("list").Sort
        .SetRange Range("B2:K5002")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
0
user6734313

Vous pouvez procéder différemment, mais si vous souhaitez utiliser une fonction de feuille de calcul Excel native dans votre code VBA, procédez comme suit (notez que j'ai également ajusté la façon dont vous faites référence à A1):

Application.WorksheetFunction.Indirect(Sheets(1).Range("A1"))

Edit Excuses - Je n'avais pas testé cela. Il semble que la fonction indirecte ne soit pas disponible dans ce contexte. Au lieu de cela, essayez quelque chose comme ceci:

Dim rng as Range
Set rng = sheets(1).Range("A1")

sheets(1).Range(rng.text).Select
0
Grade 'Eh' Bacon