Pisanie kodu kodem - przypisanie zdarzenia dodanej kodem kontrolce
Poniższy przykład pokazuje jak za pomocą kodu VBA można napisać ... kod VBA. Procedura dodaje do aktywnego skoroszytu kontrolkę CheckBox, a następnie tworzy kod obsługujący zdarzenie 'Click':
Sub wstawCheckBox()
Dim arkusz As Worksheet
Set arkusz = ActiveSheet
'dodaje kontrolkę
Set NewCheckBox = arkusz.OLEObjects.Add(ClassType:="Forms.CheckBox.1")
nazwa = NewCheckBox.Name
NewCheckBox.Object.Caption = nazwa
'pisze kod
code = "Sub " & nazwa & "_Click()" & vbCr
code = code & "MsgBox (me." & nazwa & ".name & "" - to działa!"")" & vbCr
code = code & "End Sub"
'wstawia kod do arkusza
With ThisWorkbook.VBProject. _
VBComponents(arkusz.Name).CodeModule
nextline = .CountOfLines + 1
.InsertLines nextline, code
End With
End Sub
Konieczne jest włączenie dostępu do projektu VB: menu excela narzędzia/makra/bezpieczeństwo/zaufane źródła, zaznaczyć 'ufaj dostęowi do projektu VB' (tłumaczenie własne).
Procedura pochodzi z książki J. Walkenbacha "Programowanie Excel 2000". Mojego autorstwa są (niestety) poprawki i drobne zmiany w kodzie.
Porównaj pisaniekoduwmodule.htm