2009-09-11 4 views
3

Comment transmettre un argument à une méthode enregistrée avec l'événement onAction dans Excel VBA?Passage d'arguments à la méthode enregistrée avec l'événement onAction (VBA - Excel)

Le code que j'ai est:

With ActiveSheet.CheckBoxes.Add(rCell.Left, rCell.Top, rCell.Width, rCell.Height) 
     .Interior.ColorIndex = xlNone 
     .Caption = "" 
     .OnAction = "CheckboxChange" 
End With 

Je veux passer le "rCell" à la sous-routine "CheckboxChange". Tout moyen de le faire. Fondamentalement, je veux savoir la cellule dans laquelle la case à cocher était présente dans la sous-routine CheckboxChange.

+0

duplication possible de [Excel, VBA: comment transmettre plusieurs variables à .OnAction] (http://stackoverflow.com/questions/13079727/excel-vba-how-to-pass-multiple-variables-to-onaction – RubberDuck

Répondre

3

Changer ceci:

.OnAction = "CheckboxChange" 

à ceci:

.OnAction = "'CheckboxChange""" & rCell & """'" 

"" »= 3 guillemets doubles

"" """ = 3 guillemets doubles & 1 guillemet simple & 1 double citation

+3

Je recommande d'utiliser chr (34) pour "éviter ce genre de multiples confus" situation – FinancialRadDeveloper

2

avec chr (34) au lieu de citation ("), il pourrait être plus facile,

J'ai un exemple avec trois arguments de chaîne:

.OnAction = "'" & ThisWorkbook.Name & "'!'Importer_Items_Temp_par_Menu_Déroulant " & Chr(34) & Nom_Fichier & Chr(34) & " , " & Chr(34) & Old_Val & Chr(34) & " , " & Chr(34) & ThisWorkbook.Sheets("Import_Objets").Cells(Item_Num, q * 2).Value & Chr(34) & "'" 

.

Où Importer_Items_Temp_par_Menu_Déroulant est une macro,

nom_fichier est une variable de chaîne,

Old_Val aussi,

ThisWorkbook.Sheets ("Import_Objets"). Les cellules (Item_Num, q * 2) .Value est une chaîne aussi, à partir d'une cellule dans une feuille.

1

Le contrôle Excel.Checkbox a la propriété LinkedCell. Définissez cette propriété sur la valeur rCell.Address ou similaire. Définissez OnAction sur la macro CheckboxChange. Pour obtenir la case à cocher cliquée, utilisez Evaluate(Application.Caller) à l'intérieur de CheckboxChange. Application.Caller sera le nom de la case à cocher, et Evaluate renvoie l'objet checkbox lui-même. En utilisant cet objet, vous pouvez obtenir ses Name ou LinkedCell.

Questions connexes