У меня есть таблица Excel, которая разделена на разные разделы с именованными диапазонами. Я хочу скрыть именованный диапазон при щелчке по галочке. Я могу сделать это для одного флажка, но я хотел бы иметь одну функцию, которая может скрыть соответствующий раздел на основе вызывающего флажка. Я планировал вызывать эту функцию из event_handlers, когда щелкнуты флажки, и передать этот флажок в качестве аргумента.Элемент управления Excel vba -get ActiveX при запуске обработчика событий
Есть ли способ доступа к объекту флажка, который вызывает обработчик событий?
Это работает:
Sub chkDogsInContest_Click()
ActiveSheet.Names("DogsInContest").RefersToRange.EntireRow.Hidden = Not chkMemberData.Value
End Sub
Но это то, что я хотел бы сделать:
Sub chkDogsInContest_Click()
Module1.Show_Hide_Section (<calling checkbox>)
End Sub
Эти функции определены в другом модуле:
'The format for the the names of the checkbox controls is
'CHECKBOX_NAME_PREFIX + <name>
'where "name" is also the name of the associated Named Range
Public Const CHECKBOX_NAME_PREFIX As String = "chk"
Public Function CheckName_To_SectionName(ByRef strCheckName As String)
CheckName_To_SectionName = Mid(strCheckName, CHECKBOX_NAME_PREFIX.Length() + 1)
End Function
Public Sub Show_Hide_Section(ByRef chkBox As CheckBox)
ActiveSheet.Names(CheckName_To_SectionName(chkBox.Name())).RefersTo.EntireRow.Hidden = True
End Sub
Да, это то, что я закончил делать. Я хотел бы, чтобы был способ сделать это, где я мог бы установить связь между флажком и диапазоном как частью структуры данных, а не жестко закодированной в каждую функцию события Click. Кроме того, я пытался использовать встроенные структуры данных, поэтому я бы не дублировал объектную модель Excel, создав свой собственный. – xdhmoore