我有一個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 2010-06-08 14:23:25