Передать объект листа и кнопки из командной кнопки - PullRequest
0 голосов
/ 16 мая 2018

Есть ли способ передать объект ActiveSheet и объект в качестве аргументов для подпрограммы, которая вызывается с помощью кнопки на рабочем листе?

Я знаю, что вы можете передавать аргументы в макрос из командной кнопкииз следующего:

Как вызвать макрос из кнопки и передать аргументы

Однако как бы вы отправили следующие аргументы подпрограмме, когда нажата кнопка_1?(без использования события commandButton_click)

аргумент 1: ws как лист (лист, содержащий кнопку, которая была нажата) аргумент 2: кнопка как объект (кнопка, которая была нажата)

Iпопробовал следующее в поле ввода «Назначить макрос» для кнопки.

'SubToBeCalledByButton (ActiveSheet, this)'


Попробовал / u / Nathan_Sav предложение поставить вызов как: 'SubToBeCalledByButton (activesheet, activesheet.shapes ("Button Name")) ", но получил следующую ошибку:

error

Вот вход, который я использовал вназначить макрос:

Assign Macro

Вот подпрограмма, вызываемая кнопкой:

Public Sub DetailButton(ws As Excel.Worksheet, but As Object)

    Debug.Print "ws:" & vbTab & ws.Name
    Debug.Print "but:" & vbTab & but.Name
    Debug.Print "cal:" & vbTab & Application.Caller

End Sub

1 Ответ

0 голосов
/ 16 мая 2018

Из комментария Натана Савса по моему вопросу:

Нет необходимости отправлять ActiveSheet и CommandButton в качестве аргументов.

ActiveSheet можно получить, просто используя ActiveSheet в вызываемой подпрограмме, так как кнопка, которая вызывает подпрограмму, должна быть на ActiveSheet, чтобы ее можно было нажать.

Button (кнопка, вызвавшая подпрограмму) можно получить с помощью Application.Caller

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