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.
Application.Caller
renvoie l'objet de plage à partir duquel l'UDF est appelée.