Передача аргументов методу, зарегистрированному в событии onAction (VBA - Excel) - PullRequest
4 голосов
/ 11 сентября 2009

Как передать аргумент методу, который зарегистрирован в событии onAction в Excel VBA?

Код, который у меня есть:

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

Я хочу передать «rCell» подпрограмме «CheckboxChange». Любой способ сделать это. В основном я хочу знать ячейку, в которой присутствовал флажок в подпрограмме CheckboxChange.

Ответы [ 3 ]

4 голосов
/ 08 октября 2009

Изменить это:

.OnAction = "CheckboxChange"

К этому:

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

"" "= 3 двойных кавычки

"" "'" = 3 двойных кавычки & 1 одинарная кавычка & 1 двойная кавычка

2 голосов
/ 23 декабря 2013

с chr (34) вместо кавычки ("), это может быть проще,

У меня есть пример с 3 строковыми аргументами:

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

.

Где Importer_Items_Temp_par_Menu_Déroulant - это макрос,

Nom_Fichier - строковая переменная,

Old_Val тоже,

ThisWorkbook.Sheets ("Import_Objets"). Ячейки (Item_Num, q * 2). Значение также является строкой из ячейки листа.

1 голос
/ 10 апреля 2016

Элемент управления Excel.Checkbox имеет свойство LinkedCell. Установите для этого свойства значение rCell.Address или подобное. Установите OnAction в макрос CheckboxChange. Чтобы получить отмеченный флажок, используйте Evaluate(Application.Caller) внутри CheckboxChange. Application.Caller будет именем флажка, а Evaluate возвращает сам объект флажка. Используя этот объект, вы можете получить его Name или LinkedCell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...