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 WorksheetSet 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 WithEnd 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
kkkate