web-dev-qa-db-fra.com

Cellule Excel à partir de laquelle une fonction est appelée

Comment puis-je obtenir la cellule d'où ma fonction VBA est appelée?

En d'autres termes, quel est l'équivalent VBA pour INDIRECT (ROW (), COLUMN ())?

Je ne cherche pas ActiveCell.

Ce que je veux faire, c'est avoir une simple fonction ThisRow_Col(rColumn As String) retourner la colonne X de la ligne à partir de laquelle elle est appelée. Disons en B2 que j'appelle = ThisRow_Col ("A"), il devrait retourner la valeur de A2. Cela devrait fonctionner quelle que soit la cellule active.

MODIFIER : Merci Charles pour la réponse: Application.Caller. Le code suivant obtient la colonne X de la ligne actuelle, indépendamment de l'emplacement de la sélection:

Function ThisRow_Col(rColumn As Range)
    ' Return INDIRECT(rcolumn & ROW())

    ThisRow_Col = Application.Caller.Worksheet.Cells(Application.Caller.Row, rColumn.Column).Value

End Function

Notez qu'il est préférable de passer la colonne en tant que plage (ThisRow_Col(A1)) que de la passer en tant que chaîne, car Excel peut automatiquement mettre à jour les formules si vous déplacez ou insérez des colonnes. Bien sûr, la ligne 1 De A1 N'est qu'une convention.

47
Dan Dascalescu

Application.Caller renvoie l'objet de plage à partir duquel l'UDF est appelée.

68
Charles Williams