2015-01-05 2 views
-1

런타임에 추가되는 많은 수의 확인란이있는 Excel 형식이 있습니다. 값이 변경 될 때 실행되는 해당 확인란 각각에 처리기를 추가하고 싶습니다. 다른 버전의 Visual Basic에서는 AddHandler를 사용하지만 Excel VBA에서는 작동하지 않는다는 것을 알고 있습니다.양식의 모든 확인란에 Excel VBA 추가 처리자

'This is in a class module called CheckboxHandler 
Public WithEvents cb As MSForms.CheckBox 

Private Sub cb_change() 
    MsgBox ("test") 
end sub 

그리고, 내 사용자 정의 폼에서,이 코드가 : 가능한 한 빨리

With CreateObject("Scripting.Dictionary") 
.....'Unrelated code omitted 

'Variable Checkboxes 
'Add Handler to checkboxes 
Dim colCBHandlers As Collection 
Set colCBHandlers = New Collection 
Dim objHandler As CheckboxHandler 

Dim i As Long 
Dim chkBox As MSForms.CheckBox 
For i = 1 To .count - 1 
    Set chkBox = Me.Controls.Add("Forms.Checkbox.1", "Checkbox" & i) 
    chkBox.Caption = .Keys()(i) 
    chkBox.VALUE = False 
    chkBox.Top = (chkBox.Height + 10) * (i - 1) + 55 
    chkBox.Left = 725 
    Set objHandler = New CheckboxHandler 
    Set objHandler.cb = chkBox 
    colCBHandlers.Add objHandler 
Next i 
End With 
+0

부적절한 질문입니까? 나는 downvoting에 대해 혼란스러워. – ale10ander

답변

1

colCBHandlers이 범위를 벗어나 이동됩니다 예를 들어 다음

, 나는 다음과 같은 코드를 함께했다 확인란을 만드는 하위가 종료됩니다.

컬렉션을 전역으로 (모듈 수준에서) 선언해야 생성되고 채워진 채로 손실되지 않습니다.

+0

감사합니다! 나는 이것이 당신이 이미 가지고있는 것을 발견하기 위해서만 나의 질문을 업데이트하기 위해 돌아 왔다는 것을 깨달았다! – ale10ander

+0

쉽게 실수를 ... –

관련 문제