4

How do you pass an argument to a method which is registered with the onAction event in Excel VBA?

The code I have is:

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

I want to pass the "rCell" to the "CheckboxChange" sub routine. Any way to do that. Basically I want to know the cell in which the checkbox was present in the CheckboxChange sub routine.

1

3 Answers 3

5

Change this:

.OnAction = "CheckboxChange"

To this:

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

""" = 3 double quotes

"""'" = 3 double quotes & 1 single quote & 1 double quote

Sign up to request clarification or add additional context in comments.

1 Comment

I recommend using chr(34) for " to avoid this sort of confusing multiple " situation
3

with chr(34) instead of quote ("), it might be easier,

I have an example with 3 string arguments:

.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) & "'"

.

Where Importer_Items_Temp_par_Menu_Déroulant is a macro,

Nom_Fichier is a string variable,

Old_Val too,

ThisWorkbook.Sheets("Import_Objets").Cells(Item_Num, q * 2).Value is a string too, from a cell in a sheet.

Comments

1

The Excel.Checkbox control has the property LinkedCell. Set this property to the value of rCell.Address or the like. Set OnAction to the CheckboxChange macro. To get the clicked checkbox, use Evaluate(Application.Caller) inside of CheckboxChange. Application.Caller will be the checkbox's name, and Evaluate returns the checkbox object itself. Using this object you can get its Name or LinkedCell.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.