Можете ли вы ссылаться на имя элемента управления в подпрограмме в VBA? - PullRequest
0 голосов
/ 30 марта 2020

Итак, я пытаюсь отфильтровать большой раздел данных в электронной таблице с помощью флажков. Пока около 80 отдельных флажков. Мне интересно, есть ли в любом случае ссылка на имя флажка (или любого другого элемента управления) внутри подпрограммы, как на указанную c ссылку, то есть thiscontrol.name. В настоящее время первый флажок гласит:

Private Sub_F1_Click()

    StringVariableForLaterUse ="F1"
    If F1.Value = True Then
    'Display Data Relevant to F1
    End If
End

Мне интересно, могу ли я использовать

StringVariableForLaterUse = ThisControl.Name

и

If ThisControl.Value = True Then

, тогда я смог бы повторить это еще 78 раз. В настоящее время это фактор чистой лени, однако я хочу, чтобы мои сабвуферы были самодостаточными. Есть мысли, ребята?

1 Ответ

0 голосов
/ 30 марта 2020

Вы никогда не можете использовать строку как объект ... Но для поля ActiveXcheck используйте следующий обходной код.

 Public chk1 As Shape

Private Sub CheckBox1_Click()
 Set chk1 = ActiveSheet.Shapes(CheckBox1.Name)
 MsgBox chk1.OLEFormat.Object.Object.value
End Sub

Теперь вы можете использовать chk1 в другом Sub внутри модуля листа.

Вы также можете ссылаться на него из модуля Sub, также ссылаясь на лист :

Sub testSheetChk()
 Debug.Print Worksheets("Sheet Name").chk1.OLEFormat.Object.Object.value
End Sub

Но это будет работать только после первого (однократного) запуска события click, чтобы присвоить значение переменной объекта.

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