Suggesties |
voorbeeldbestand
VBA-objecten met VBA-code maken/wijzigen |
1 Workbook en VBProject 2 Modules 2.1 Module benaderen 2.2 Alle modulenamen 2.3 Modulenaam wijzigen 2.3.1 Werkboeknaam 2.3.2 Werkbladnaam 2.3.3 Userformnaam 2.3.4 Macromodulenaam 2.3.5 Klassemodulenaam 2.4 Module toevoegen 2.4.1 Werkbladmodule 2.4.2 Macromodule 2.4.3 Userform 2.4.4 Klassemodule 2.5 Module exporteren 2.5.1 Macromodule 2.5.2 Userform 2.5.3 Werkblad 2.5.4 Klassemodule 2.5.5 Werkboek 2.5.6 Alle modules 2.6 Module importeren 2.6.1 Werkblad 2.6.2 Macromodule 2.6.3 Userform 2.6.4 Klassemodule 2.6.5 Werkboek 2.7 Module verwijderen 2.7.1 Werkblad 2.7.2 Macromodule 2.7.3 Userform 2.7.4 Klassemodule 2.7.5 Alle modules 2.8 Module kopiëren 2.8.1 Werkblad 2.8.2 Macromodule 2.8.3 Userform 2.8.4 Klassemodule 2.8.5 Alle macromodules 2.9 Module verplaatsen 2.9.1 Werkblad binnen werkboek 2.9.2 Werkblad ander werkboek 2.9.3 Userform 2.9.4 Macromodule 2.9.5 Klassemodule 3 De inhoud van een module 3.1 Codemodule 3.1.1 Volledige VBA-code lezen 3.1.2 Deel VBA-code lezen 3.1.3 Alle code verwijderen 3.2 Macromodule 3.2.1 Macro 3.2.1.1 Alle macro's 3.2.1.2 zoeken 3.2.1.3 toevoegen 3.2.1.4 code lezen 3.2.1.5 kopiëren 3.2.1.6 code vervangen 3.2.1.7 hernoemen 3.2.1.8 verwijderen 3.2.1.9 verplaatsen 3.2.2 Functie 3.2.2.1 Alle functies 3.2.2.2 zoeken 3.2.2.3 toevoegen 3.2.2.4 code lezen 3.2.2.5 kopiëren 3.2.2.6 code vervangen 3.2.2.7 hernoemen 3.2.2.8 verwijderen 3.2.2.9 verplaatsen 3.3 Werkboek 3.3.1 Macro's 3.3.2 Functies 3.3.3 Gebeurtenisprocedures 3.3.3.1 Alle gebeurteniscode 3.3.3.2 zoeken 3.3.3.3 lezen 3.3.3.4 verwijderen 3.3.3.5 toevoegen 3.3.3.6 kopiëren 3.3.3.7 verplaatsen 3.4 Werkblad 3.4.1 Macro's 3.4.2 Functies 3.4.3 Gebeurteniscode 3.4.3.1 Alle gebeurteniscode 3.4.3.2 zoeken 3.4.3.3 lezen 3.4.3.4 verwijderen 3.4.3.5 toevoegen 3.4.3.6 kopiëren 3.4.3.7 verplaatsen 4 ActiveX-controls 4.1 Alle ActiveX-controls 4.2 control toevoegen 4.2.1 tekstvak: TextBox 4.2.2 keuzerondje: OptionButton 4.2.3 selectievak: CheckBox 4.2.4 bijschrift: Label 4.2.5 knop: CommandButton 4.2.6 wisselknop: ToggleButton 4.2.7 kringveld: SpinButton 4.2.8 lijst met invoer: ComboBox 4.2.9 lijst: ListBox 4.2.10 groepsvak: Frame 4.2.11 tabstrook: Tabstrip 4.2.12 multipage: MultipPage 4.2.13 schuifbalk: ScrollBar 4.2.14 afbeelding: Image 4.3 control kopiëren 4.4 control hernoemen 4.5 control verwijderen 4.6 control gebeurteniscode 4.6.1 zoeken 4.6.2 lezen 4.6.3 toevoegen 4.6.4 kopiëren 4.6.5 verplaatsen 4.6.6 vervangen 4.6.7 verwijderen 5 Userform 5.1 Macro's 5.2 Functies 5.3 Gebeurteniscode 5.3.1 Alle gebeurteniscode 5.3.2 zoeken 5.3.3 lezen 5.3.4 verwijderen 5.3.5 toevoegen 5.3.6 kopiëren 5.3.7 verplaatsen 5.4 Controls in Userform 5.4.1 Alle controls 5.4.2 Control toevoegen 5.4.2.1 tekstvak: TextBox 5.4.2.2 keuze: OptionButton 5.4.2.3 selectievak: CheckBox 5.4.2.4 bijschrift: Label 5.4.2.5 knop: CommandButton 5.4.2.6 wisselknop: ToggleButton 5.4.2.7 kringveld: SpinButton 5.4.2.8 lijst met invoer: ComboBox 5.4.2.9 lijst: ListBox 5.4.2.10 groepsvak: Frame 5.4.2.11 tabstrook: Tabstrip 5.4.2.12 multipage: MultiPage 5.4.2.13 schuifbalk: ScrollBar 5.4.2.14 afbeelding: Image 5.4.3 Control kopiëren 5.4.4 Control hernoemen 5.4.5 Control verwijderen 5.4.6 Control gebeurtenissen 5.4.6.1 Alle gebeurteniscode 5.4.6.2 zoeken 5.4.6.3 lezen 5.4.6.4 toevoegen. 5.4.6.5 kopiëren 5.4.6.6 vervangen 5.4.6.7 aanpassen 5.4.6.8 verwijderen |
VBA-objecten met VBA-code maken/wijzigen Met VBA kun je macro's schrijven die macro's, funkties of userforms maken en beheren.Tijdens de uitvoering van een macro kun je daarmee nieuwe macro's, funkties of userforms maken, wijzigen, kopiëren of verwijderen. Hieronder gaan we uit van een Exceltoepassing. Daarom wordt steeds uitgegaan van het Excelbestand dat de code bevat : ThisWorkbook. Alle groen gemarkeerde tekst is voorbeeldtekst die de gebruiker aan de eigen situatie kan aanpassen. Een Excelbestand heet in VBA-taal een Workbook. Het Workbook kan VBA-code bevatten; in VBA-taal het VBproject. ThisWorkbook.VBproject VBA-code bevindt zich altijd in een 'module'. Een Excelbestand kent 5 soorten modules (in VBA-taal VBComponents): o ThisWorkbook: met de eigenschappen van het bestand o Blad of Sheet: een werkblad o Module: een module die macro's en/of funkties kan bevatten o Userform: een gebruikersscherm dat macro's en/of funkties kan bevatten o Classmodule: macro's en funkties die vanuit een andere module kunnen worden aangeroepen ThisWorkbook.VBProject.VBComponents Een Workbook bevat maximaal 1 exemplaar van de module ThisWorkbook. Het aantal overige modulen kan naar wens uitgebreid worden. Alle modules kunnen VBA-code bevatten. Er zijn verschillende soorten VBA-code: - declaraties van variabelen - macro's (beginnend met Sub ...End Sub - functies (beginnend met Function ... End Function - gebeurtenissen - ActiveX-controls met gebeurtenissen - Userformcontrols met gebeurtenissen Niet alle modules kunnen alle verschillende soorten VBA bevatten:
De index van ThisWorkbook is altijd 1, de index van het eerste werkblad is 2. ThisWorkbook.VBProject.VBComponents(1) ThisWorkbook.VBProject.VBComponents("ThisWorkbook") 2.2 Achterhaal alle modulenamen Alle modules hebben een 'VBA-naam'. Dat is de naam waarmee ze als uniek object te benaderen zijn.Het werkboek en de werkbladen hebben ook nog een 'gewone' naam: het werkboek: de naam waaronder het bestand is opgeslagen, het werkblad: de naam die op het tabblad staat. De modules van een VBproject vormen de verzameling VBComponents. Sub Modules_namen() For j= 1 to ThisWorkbook.VbProject.VBComponents.Count
End Submsgbox ThisWorkbook.VBProject.VBComponents(j).Name
NextSub Modules_namen2() For each cp in ThisWorkbook.VbProject.VBcomponents
End Submsgbox cp.Name
NextSub Module_werkboek_codenaam() msgbox=ThisWorkbook.CodeName
End SubSub module_werkblad_codenamen() For each sh in ThisWorkbook.Sheets
End Submsgbox sh.CodeName
NextOmdat dit een alleen-lezen eigenschap is, kan die daarom niet gebruikt worden om de VBA-naam te wijzigen. Daarvoor moeten we de volgende methode gebruiken: Sub modulenaam_werkboek_wijzigen() ThisWorkbook.VbProject.VBcomponents("ThisWorkbook").Name ="hoofdbestand"
End SubSub Modulenaam_werkblad_wijzigen() ThisWorkbook.VbProject.VBcomponents(2).Name ="werkblad overzicht"
End SubSub Modulenaam_userform_wijzigen() ThisWorkbook.VbProject.VBcomponents("Userform1").Name ="invoer"
End Sub2.3.4 Macromodulenaam wijzigen Sub Modulenaam_macromodule_wijzigen() ThisWorkbook.VbProject.VBcomponents("Module1").Name ="macroos"
End Sub2.3.5 Klassemodulenaam wijzigen Sub Modulenaam_klassemodule_wijzigen() ThisWorkbook.VbProject.VBcomponents("Klasse1").Name ="Klas_I"
End Sub- een werkblad - een macro module (vbext_ct_StdModule) - een gebruikersformulier/Userform (vbext_ct_MSForm) - een classmodule (vbext_ct_ClassModule) 2.4.1 Werkbladmodule toevoegen Sub Werkbladmodule_toevoegen() ThisWorkbook.Sheets.Add
End SubSub Macromodule_toevoegen1() ThisWorkbook.VBProject.VBComponents.Add vbext_ct_StdModule
End SubSub Macromodule_toevoegen2() ThisWorkbook.VBProject.VBComponents.Add 1
End SubAls die nieuwe module een andere naam moet hebben: Macromodule met specifieke naam toevoegen Sub Macromodule_toevoegen_naam1() ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).Name ="Macroos"
End SubSub Macromodule_toevoegen_naam2() ThisWorkbook.VBProject.VBComponents.Add(1).Name ="Macroos"
End SubSub Userform_toevoegen1() ThisWorkbook.VBProject.VBComponents.Add vbext_ct_MSForm
End SubSub Userform_toevoegen2() ThisWorkbook.VBProject.VBComponents.Add 3
End SubAls dit nieuwe Userform een andere naam moet hebben: Userform met specifieke naam toevoegen Sub Userform_toevoegen_naam1() ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm).Name="invoer"
End SubSub Userform_toevoegen_naam2() ThisWorkbook.VBProject.VBComponents.Add(3).Name ="invoer"
End SubSub Klassemodule_toevoegen1() ThisWorkbook.VBProject.VBComponents.Add vbext_ct_ClassModule
End SubSub Klassemodule_toevoegen2() ThisWorkbook.VBProject.VBComponents.Add 2
End SubAls deze nieuwe klassemodule een andere naam moet hebben: Klassemodule met specifieke naam toevoegen Sub Klassemodule_toevoegen_naam1() With ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm).Name="Klassenaam"
End SubSub Klassemodule_toevoegen_naam2() ThisWorkbook.VBProject.VBComponents.Add(2).Name ="Klassenaam"
End SubExtensies: - .bas voor een macromodule - .frm voor een userform - .cls voor een werkboek, werkblad of klassemodule De geëxporteerde modules kunnen eenvoudig gedistribueerd worden en geïmporteerd in andere Excel-bestanden. Sub Macromodule_exporteren() With ThisWorkbook.VBProject.VBComponents("Macroos")
End Sub.export"E:\OF\"&.Name & ".bas"
End WithSub Userform_exporteren() With ThisWorkbook.VBProject.VBComponents("invoer")
End Sub.export"E:\OF\"&.Name & ".frm"
End WithSub Werkblad_exporteren() With ThisWorkbook.VBProject.VBComponents("Blad1")
End Sub.export"E:\OF\"& .Name & ".cls"
End WithSub Klassemodule_exporteren() With ThisWorkbook.VBProject.VBComponents("Klasse1")
End Sub.export"E:\OF\"& .Name & ".cls"
End WithSub Werkboek_exporteren() with ThisWorkbook.VBProject.VBComponents(1)
End Sub.export"E:\OF\"&.Name & ".cls"
End WithSub Alle_modules_exporteren() For Each cp In ThisWorkbook.VBProject.VBComponents
End Subcp.Export"E:\OF\"& cp.Name & Switch(cp.Type = 1, ".bas", cp.Type = 3, ".frm", cp.Type = 2, ".cls", cp.Type = 100, ".cls")
NextSub Werkblad_importeren() ThisWorkbook.VBProject.VBComponents.Import "E:\OF\sheet1.cls"
End SubSub Macromodule_importeren() ThisWorkbook.VBProject.VBComponents.Import "E:\OF\Macroos.bas"
End SubSub Userform_importeren() ThisWorkbook.VBProject.VBComponents.Import "E:\OF\invoer.frm"
End SubSub Klassemodule_importeren() ThisWorkbook.VBProject.VBComponents.Import "E:\OF\klasse5.cls"
End SubSub werkblad_verwijderen() ThisWorkbook.Sheets(1).Delete
End SubSub Macromodule_verwijderen() With ThisWorkbook.VBProject
End Sub.VBComponents.Remove .VBComponents("Macroos")
End WithSub Userform_verwijderen() With ThisWorkbook.VBProject
End Sub.VBComponents.Remove .VBComponents("invoer")
End With2.7.4 Klassemodule verwijderen Sub Klassemodule_verwijderen() With ThisWorkbook.VBProject
End Sub.VBComponents.Remove .VBComponents("Klasse1")
End With2.7.5 Alle modules verwijderen Sub Modules_verwijderen() With ThisWorkbook.VBProject
End Subfor each cp in .VBComponents
End With.VBcomponents.Remove cp
Next2.8 Module kopiëren naar een ander bestand Sub werkblad_kopiëren() Thisworkbook.sheets(1).copy workbooks(2).sheets1
End subMethode 1 · Exporteer de module naar een '.bas' (macromodule) of '.frm' (userform) bestand met dezelfde naam als de module · Maak een nieuw bestand; importeer daarin het '.bas' (resp. het '.frm')-bestand. Sub Macromodule_kopiëren1() ThisWorkbook.VBProject.VBComponents("Macroos").export "E:\Macroos.bas"
End SubWith Workbooks.Add .VBProject.VBComponents.import "E:\Macroos.bas"
End With1. Lees de naam en de code van de te kopiëren module. 2. Maak een nieuw bestand; maak daarin een nieuwe module met dezelfde naam als de te kopiëren module. 3. Zet de code van de 'te kopiëren' macromodule in de nieuwe macromodule (de methode die hiervoor gebruikt wordt - AddFromString- komt later aan de orde) Sub Macromodule_kopiëren2() With ThisWorkbook.VBProject.VBComponents("Macroos")
End Subc00 = .Name
End Withc01 = .CodeModule.Lines(1, .CodeModule.CountOfLines) With Workbooks.Add With .VBProject.VBComponents.Add(vbext_ct_StdModule)
End With.Name = c00
End With.CodeModule.AddFromString c01 Sub Userform_kopiëren1() ThisWorkbook.VBProject.VBComponents("invoer").export "E:\ invoer.frm"
End SubWith Workbooks.Add .VBProject.VBComponents.import "E:\invoer.frm"
End WithSub Klassemodule_kopiëren1() ThisWorkbook.VBProject.VBComponents("Klasse1").export "E:\Klasse_I.cls"
End SubWith Workbooks.Add .VBProject.VBComponents.import "E:\Klasse_I.cls"
End WithSub Klassemodule_kopiëren2() With ThisWorkbook.VBProject.VBComponents("Klasse1")
End Subc00 = .Name
End Withc01 = .CodeModule.Lines(1, .CodeModule.CountOfLines) With Workbooks.Add With .VBProject.VBComponents.Add(vbext_ct_ClsModule)
End With.Name = c00
End With.CodeModule.AddFromString c01 2.8.5 Alle macromodules en userforms kopiëren Sub Modules_kopiëren() for each cp in ThisWorkbook.VBProject.VBComponents
End Subif cp.type<>100 then
Nextif Workbooks.count=1 then workbooks.Add
End ifWith workbooks(2).VBProject.VBComponents.Add(vbext_ct_MSForm) .Name = cp.name
End with.CodeModule.AddFromString cp.codemodule.lines(1,cp.codemodule.countofLines) In het 'ontvangende' bestand wordt een kopie van de gesleepte module geplaatst. Hiervoor heb ik nog geen VBA-code kunnen ontdekken. Alleen voor werkbladmodules bestaat VBA-code om het werkblad binnen het werkboek te verplaatsen. Daarnaast is verplaatsing naar een ander geopend bestand mogelijk. 2.9.1 Werkblad verplaatsen binnen het werkboek Sub verplaats_werkblad() ThisWorkbook.Sheets(1).Move ThisWorkbook.Sheets(4)
End Sub2.9.2 Werkblad verplaatsen naar een ander werkboek Sub verplaats_werkblad_naar_ander_werkboek() ThisWorkbook.Sheets(1).Move Workbook(2).Sheets(4)
End Sub2.9.3 Userform verplaatsen naar een ander werkboek Gebruik hiervoor de export-import methode2.9.4 Macromodule verplaatsen naar een ander werkboek Gebruik hiervoor de export-import methode2.9.5 Klassemodule verplaatsen naar een ander werkboek Gebruik hiervoor de export-import methode Een module (werkboek, werkblad, gebruikersformulier, macromodule, klassemodule) bevat de eigenschap 'codemodule' die alle VBA-code van de module bevat.Deze codemodule bevat alle VBA-procedures. Er zijn vijf soorten procedures: 1. Modulegebeurteniscode Het werkboek, ieder werkblad, een klassemodule en ieder userform kent een aantal 'gebeurtenissen' (in VBA: Events). Bijvoorbeeld: - het openen van het werkboek (Private Sub Workbook_Open) - het wijzigen van een werkblad (Private Sub Worksheet_Change) - het initialiseren van een userform (Private Sub Userform_Initialize) - het initialiseren van een klassemodule (Private Class_initialize() Deze gebeurtenissen hebben betrekking op de module (werkboek, werkblad, userform) zelf. De VBA-code voor deze gebeurtenissen staat in de codemodule van het werkboek, werkblad of userform. 2. Macro's Alle modules (werkboek, werkblad, gebruikersformulier, macromodule, klassemodule) kunnen macro's bevatten. 3. Funkties Alle modules (werkboek, werkblad, gebruikersformulier, macromodule, klassemodule) kunnen funkties bevatten. 4. ActiveX objecten Alleen werkbladen kunnen ActiveX-objecten en ActiveX-gebeurtenisprocedures bevatten. ActiveX-objecten zijn afkomstig uit de werkset besturingselementen (bijv. tekstvak, keuzerondje, vinkvak, keuzelijst, keuzelijst met invoervak, opdrachtknop, label, etc). 5. Formcontrols Alleen Userforms kunnen Userformcontrols en Userformcontrol-gebeurtenisprocedures bevatten. Formuliercontrols zijn bijv. tekstvak, keuzerondje, vinkvak, keuzelijst, keuzelijst met invoervak, opdrachtknop, label, etc. Zij zijn afkomstig van de verzameling formcontrols.
Procedures Een procedure (macro, gebeurtenis of funktie) is geen apart objekt. Daarom bevat VBA ook geen methodes om deze toe te voegen (Add), te kopiëren (Copy), te verplaatsen (Rename/Move) of te verwijderen (Delete/Remove). Een procedure (macro, gebeurtenis of funktie) is niets anders dan een aantal regels code in de codemodule. Het begin en het einde van een procedure wordt bepaald door een startregel en een eindregel: Bij macro's en gebeurtenissen: Sub naam (argumenten) End Sub Function naam (argumenten) End Function De begin- en sluitregel van een procedure funktioneren als markering voor een tekstonderdeel van de pagina. Gebeurtenisprocedures zijn altijd beperkt tot de module waarvan ze deel uitmaken. Dat blijkt uit de 'bereik'-toevoeging Private: Private Sub Workbook_Open() Gebeurtenisprocedures kunnen specifieke argumenten hebben: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Schrijven in een codemodule De VBA-code van een gebeurtenis kan toegevoegd worden met de methoden AddFromString, InsertLines of AddFromFile. Voor gebeurtenisprocedures bevat VBA één aparte methode: CreateEventProc. De VBA-methode CreateEventProc plaatst automatisch de begin- en eindregel van de procedure : Private Sub ***_methode(ByVal ...) End Sub) 3.1.1 De volledige VBA-code lezen Sub Code_in_werkboekmodule_lezen() With ThisWorkbook.VBProject.VBComponents(1).CodeModule
End SubMsgBox .Lines(1, .CountOfLines)
End With3.1.2 Een deel van de VBA-code lezen ' alle regels behalve de laatste 20 ' alle regels behalve de eerste 10 ' regel 15 t/m regel 45 ' alle regels met declaraties van variabelen Sub Code_in werkboek_deels_lezen() With ThisWorkbook.VBProject.VBComponents(2).CodeModule
End Subc00 = .Lines(1, .CountOfLines-20)
End Withc01 =.Lines(10,.CountOflines-10) c02 =.Lines(15,30) c03 =.Lines(1,.CountOfDeclarationLines) 3.1.3 Verwijder alle code in een codemodule Sub Code_werkboekmodule_verwijderen() With ThisWorkbook.VBProject.VBComponents(1).CodeModule
End Sub.DeleteLines 1, .CountOfLines
End With3.2.1.1 Alle macro's in een module VBA heeft geen methode om alle VBA-procedures in een module te tonen.Die maken we zelf: iedere regel in een module heeft de eigenschap 'ProcOfLine', die de naam van de procedure (macro, funktie) weergeeft waarin de regel staat. Als we van die eigenschap een lijst met unieke elementen maken hebben we het macro-overzicht. In een userform met een keuzelijst (keus1) komt de lijst met macro's te staan. Sub Macros_van_macromodule_in_userform_combobox()
For j = 1 To ThisWorkbook.VBProject.VBComponents("Macroos").CodeModule.CountOfLines
End Subc02 = ThisWorkbook.VBProject.VBComponents(1).CodeModule.ProcOfLine(j, 0)
NextIf InStr(c01, c02) = 0 Then c01 = c01 & "|" & c02 keus1.List = Split(Mid(c01, 2), "|") Sub Macro_zoeken()
MsgBox "macro3" & IIf(ActiveWorkbook.VBProject.VBComponents("Macroos").CodeModule.Find("Sub macro3(", 1, 1, -1, -1), "", "Niet") & "gevonden."
End Sub- AddFromString - InsertLines - AddFromFile - Methode AddFromString De tekstreeks met VBA-code wordt altijd aan het begin van de codemodule gezet. Sub Macro_in_macromodule_maken() c00 =replace(Replace(Replace("Sub nieuwe_macro()#*MsgBox ^QED ^#End Sub", "#", vbCr), "*", vbTab),"^",chr(34))
End SubThisWorkbook.VBProject.VBComponents("Macroos").CodeModule.AddFromString c00 * Een macronaam mag geen spaties bevatten. * In het voorbeeld wordt eerst een string gemaakt, die daarna in de codemodule wordt gezet. * Om in de reeks &'s te vermijden is gebruik gemaakt van de funktie replace. Bij langere tekstreeksen kan dit van pas komen. "Sub nieuwe_macro()" & vbCr & vbTab &"MsgBox " & Chr(34) & "QED" & Chr(34) & vbCr & "End Sub" - Methode Insertlines Specificeer bij de methode Insertlines waar de beginregel gezet moet worden. Daarom is het noodzakelijk te weten of de regel niet interfereert met de bestaande code in de codemodule. Sub Macro_in_macromodule_maken2() c00 =replace(Replace(Replace("Sub nieuwe_macro()#*MsgBox ^QED ^#End Sub", "#", vbCr), "*", vbTab),"^",chr(34))
End SubThisWorkbook.VBProject.VBComponents("Macroos").CodeModule.Insertlines 1, c00 Met de methode AddFromFile kan alle VBA-code uit een opgeslagen bestand worden geïmporteerd. Er kan niet slechts 1 macro of 1 gebeurtenis uit het bestand geladen worden. Sub Macro_in_macromodule_maken3() ThisWorkbook.VBProject.VBComponents("Macroos").CodeModule.Addfromfile "E:\OF\macro1.bas"
End SubSub Macro_code_lezen()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Subc00 = .Lines(.ProcStartLine("macro3", 0), .ProcCountLines("macro3", 0))
End WithProcCountLines: het aantal coderegels van een gespecificeerde macro Sub Macro_kopiëren()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Subc00 = .Lines(.ProcStartLine("macro3", 0), .ProcCountLines("macro3", 0))
End WithThisWorkbook.VBProject.VBComponents("Macromodule_2").AddFromString c00 Sub Macro_code_vervangen()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Sub.DeleteLines .ProcStartLine("macro3", 0) + 1, .ProcCountLines("macro3", 0) - 2
End With.InsertLines .ProcStartLine("macro3", 0) + 1, "c00 = " & Chr(34) & "Dit is de nieuwste tekst" Sub Macro_hernoemen()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Sub.ReplaceLine .ProcStartLine("macro3", 0), Replace(.Lines(.ProcStartLine("macro3", 0), 1), "macro3", "Macro37a")
End WithSub Macro_verwijderen()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Sub.DeleteLines .ProcStartLine("macro3", 0), .ProcCountLines("macro3", 0)
End WithSub Macro_verplaatsen()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Subc00 = .Lines(.ProcStartLine("macro3", 0), .ProcCountLines("macro3", 0))
End With.DeleteLines .ProcStartLine("macro3", 0), .ProcCountLines("macro3", 0) ThisWorkbook.VBProject.VBComponents("Macromodule_2").AddFromString c00 3.2.2.1 Alle functies in een module De eerste regel van een funktie bevat de term Function; na selectie wordt de naam eruit gelicht.In keuzelijst (keus1) in werkblad 'Blad1' komt de lijst met funkties te staan. Sub Alle_funkties_in_macromodule() c00 = "Function "
End SubWith ThisWorkbook.VBProject.VBComponents("Macroos").CodeModule c01=.Lines(1, .CountOfLines) c00, ""),"Private ",""), "|")Blad1.keus1.List = Split(Replace(Replace(Join(Filter(Split(Join(Filter(Filter(Split(c01, vbCr & Chr(10)), c0), "=", False), "("), "("), c0), "|"), End With Sub Funktie_zoeken() MsgBox "funktie2" & iif(With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule.Find("funktie2","","niet ") & "gevonden"
End SubSub Funktie_maken1() c00 =replace(Replace(Replace("Function funktie1()#*MsgBox ^QED ^#End Sub", "#", vbCr), "*", vbTab),"^",chr(34))
End SubThisWorkbook.VBProject.VBComponents(1).CodeModule.AddFromString c00 Sub Funktie_maken2() c00 =replace(Replace(Replace("Function funktie1()#*MsgBox ^QED ^#End Sub", "#", vbCr), "*", vbTab),"^",chr(34))
End SubThisWorkbook.VBProject.VBComponents("Macroos").CodeModule.Insertlines 1, c00 Sub Funktie_maken3() ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule.Addfromfile "E:\OF\macro1.bas"
End SubSub Funktie_code_lezen() With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Subc00 = .Lines(.ProcStartLine("funktie2", 0), .ProcCountLines("funktie2", 0))
End WithSub Funktie_kopiëren()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Subc00 = .Lines(.ProcStartLine("funktie2", 0), .ProcCountLines("funktie2", 0))
End WithThisWorkbook.VBProject.VBComponents("Macroos_2").CodeModule.AddFromString c00 3.2.2.6 Functie code vervangen Sub Funktie_code_vervangen() With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Sub.DeleteLines .ProcStartLine("funktie2", 0) + 1, .ProcCountLines("funktie2", 0) - 2
End With.InsertLines .ProcStartLine("funktie2", 0) + 1,"c00 = " & Chr(34) & "Dit is de nieuwste tekst" Sub Functie_hernoemen()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Sub.ReplaceLine .ProcStartLine("funktie2", 0), Replace(.Lines(.ProcStartLine("funktie2", 0), 1), "funktie2", "Funktie27a")
End WithSub Functie_verwijderen()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Sub.DeleteLines .ProcStartLine("funktie2", 0), .ProcCountLines("funktie2", 0)
End WithSub Functie_verplaatsen()
With ThisWorkbook.VBProject.VBComponents("Macroos").codemodule
End Subc00 = .Lines(.ProcStartLine("funktie2", 0), .ProcCountLines("funktie2", 0))
End With.DeleteLines .ProcStartLine("funktie2", 0), .ProcCountLines("funktie2", 0) ThisWorkbook.VBProject.VBComponents("Macroos_2").AddFromString c00
3.3.3.1 Alle gebeurtenisprocedures in een werkboek De startregel van iedere gebeurtenisprocedure in een werkboek bevat ' Sub Workbook_'Sub alle_eventprocedures_in_werkboek() With ThisWorkbook.VBProject.VBComponents(1).CodeModule
end subMsgBox join(filter( split(.Lines(1, .CountOfLines),vbCrLf),"Sub Workbook_"),vbLf)
end with3.3.3.2 Gebeurtenisprocedure zoeken Sub Werkboek_eventprocedure_zoeken() msgbox "Workbook_Open" & iif(ThisWorkbook.VBProject.VBComponents(1).CodeModule.Find("Sub Workbook_Open", 1, 1, -1, -1),"", "niet ") & "gevonden"
End Sub3.3.3.3 Gebeurtenisprocedure lezen Het argument vbext_pk_Proc is equivalent aan 0Sub Werkboek_eventprocedure_code_lezen() With ThisWorkbook.VBProject.VBComponents(1).CodeModule
End Subc01= .Lines(.ProcStartLine("Workbook_Open",0),.ProcCountlines("Workbook_Open",0))
End With3.3.3.4 Gebeurtenisprocedure verwijderen Sub Werkboek_eventprocedure_verwijderen() With ThisWorkbook.VBProject.VBComponents(1).CodeModule
End Sub.DeleteLines .ProcStartLine("Workbook_Open",0),.ProcCountlines("Workbook_Open",0)
End With3.3.3.5 Gebeurtenisprocedure toevoegen Sub Werkboek_eventprocedure_toevoegen() With ThisWorkbook.VBProject.VBComponents(1).CodeModule
End Sub.InsertLines .CreateEventProc("Open", "Workbook") + 1, vbTab & "MsgBox " & Chr(34) & "Dit is een nieuw werkboek"
End With3.3.3.6 Gebeurtenisprocedure kopiëren Een combinatie van een gebeurtenisprocedure lezen en schrijven.Sub Werkboek_eventprocedure_kopiëren() With ThisWorkbook.VBProject.VBComponents(1).CodeModule
End Subc01= .Lines(.ProcStartLine("Workbook_Open",0),.ProcCountlines("Workbook_Open",0))
End WithWith Workbooks(2).VBProject.VBComponents(1).CodeModule .AddFromString c01
End With3.3.3.7 Gebeurtenisprocedure verplaatsen Een combinatie van een gebeurtenisprocedure lezen, schrijven en verwijderen.Sub Werkboek_eventprocedure_verplaatsen() With ThisWorkbook.VBProject.VBComponents(1).CodeModule
End Subc01= .Lines(.ProcStartLine("Workbook_Open",0),.ProcCountlines("Workbook_Open",0)
End With
With Workbooks(2).VBProject.VBComponents(1).CodeModule) .deletelines .ProcStartLine("Workbook_Open",0),.ProcCountlines("Workbook_Open",0) .AddFromString c01
End With
3.4.3.1 Alle gebeurtenisprocedures in een werkblad De startregel van iedere gebeurtenisprocedure in een werkblad bevat ' Sub Worksheet_'Sub Werkblad_alle_eventprocedures() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
end subMsgBox join(filter( split(.Lines(1, .CountOfLines),vbCrLf)," Sub Worksheet_"),vbLf)
end with3.4.3.2 Gebeurtenisprocedure zoeken Sub Werkblad_eventprocedure_zoeken() msgbox "Worksheet_Change " & iif(ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule.Find(" Sub Worksheet_Change", 1, 1, -1, -1),"", "niet ") & "gevonden"
End Sub3.4.3.3 Gebeurtenisprocedure lezen Sub Werkblad_eventprocedure_code_lezen() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
End Subc01= .Lines(.ProcStartLine("Worksheet_Change",0),.ProcCountlines("Worksheet_Change",0))
End With3.4.3.4 Gebeurtenisprocedure verwijderen Sub Werkblad_eventprocedure_verwijderen() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
End Sub.DeleteLines .ProcStartLine("Worksheet_Change",0),.ProcCountlines("Worksheet_Change",0)
End With3.4.3.5 Gebeurtenisprocedure toevoegen Sub Werkblad_eventprocedure_toevoegen() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
End Sub.InsertLines .CreateEventProc("Change", "Worksheet") + 1,vbTab & "MsgBox " & Chr(34) & "Dit is een nieuw werkboek"
End With3.4.3.6 Gebeurtenisprocedure kopiëren Een combinatie van een gebeurtenisprocedure lezen en schrijven.Sub Werkblad_eventprocedure_kopiëren() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
End Subc01= .Lines(.ProcStartLine("Worksheet_Change",0),.ProcCountlines("Worksheet_Change",0))
End WithWith Workbooks(2).VBProject.VBComponents("Blad2").CodeModule .AddFromString c01
End With3.4.3.7 Gebeurtenisprocedure verplaatsen Een combinatie van een gebeurtenisprocedure lezen, schrijven en verwijderen.Sub Werkblad_eventprocedure_verplaatsen() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
End Subc01= .Lines(.ProcStartLine("Worksheet_Change",0),.ProcCountlines("Worksheet_Change",0)
End With) .deletelines .ProcStartLine("Worksheet_Change",0),.ProcCountlines("Worksheet_Change",0) With Workbooks(2).VBProject.VBComponents("Blad2").CodeModule .AddFromString c01
End WithAan een gebeurtenis (bijv. Click, Change, Activate) van zo'n object code kun je code toevoegen. De VBA-code van een gebeurtenis van een ActiveX-object komt in de codemodule van het werkblad te staan. 4.1 Alle ActiveX-objecten in een werkblad Sub alle_ActiveX_objecten() For Each cl In Sheets("Blad1").OLEObjects
End Subc01 = c01 & vbLf & cl.Name
NextMsgBox c01 Sub ActiveX_object_toevoegen() With sheets("Blad1").OLEObjects.Add("Forms.CommandButton.1",,,,,,,40,60,40,24)
End Sub.Name="knop_vervolg"
End WithWith .Object .Caption="Mededeling"
End With.Font.Size=9 .ForeColor=vbBlue Sub ActiveX_tekstvak_toevoegen()
Sheets("Blad1").OLEObjects.Add("Forms.Textbox.1", , , , , , , 40, 60, 40, 24).Name ="tekst_1"
End SubSub ActiveX_keuzerondje_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.OptionButton.1").Name =""keus_1""
End SubSub ActiveX_selectievak_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.CheckBox.1").Name ="selectie_1"
End SubSub ActiveX_bijschrift_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.Label.1").Name ="bijschrift_1"
End SubSub ActiveX_opdrachtknop_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.CommandButton.1").Name ="opdracht_1"
End SubSub ActiveX_wisselknop_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.ToggleButton.1").Name ="wissel_1"
End SubSub ActiveX_kringveld_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.SpinButton.1").Name ="spinner_1"
End SubSub ActiveX_keuzelijst_met_invoervak_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.ComboBox.1").Name ="uitklap_1"
End SubSub ActiveX_keuzelijst_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.ListBox.1").Name ="keuzen_1"
End SubSub ActiveX_groepsvak_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.Frame.1").Name ="kader_1"
End SubSub ActiveX_tabstrook_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.TabStrip.1").Name ="tab_1"
End SubSub ActiveX_multipage_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.MultiPage.1").Name ="multi_1"
End SubSub ActiveX_schuifbalk_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.ScrollBar.1").Name ="schuif_1"
End SubSub ActiveX_afbeelding_toevoegen()
Sheets("Blad1").OLEObjects.Add("forms.Image.1").Name ="plaatje_1"
End SubSub AciveX_kopie() Sheets("Blad1").OLEObjects("tekstvak1").Copy
End SubSheets("Blad2").Paste Sub ActiveX_hernoemen() Sheets("Blad1").OLEObjects("knop_vervolg").Name = "knop_einde"
End Sub4.5 ActiveX-object verwijderen Sub ActiveX_verwijderen() Sheets("Blad1").OLEObjects("knop_vervolg").delete
End Sub4.6.1 ActiveX gebeurteniscode zoeken Sub ActiveX_gebeurteniscode_zoeken MsgBox "knop_vervolg_Click" & ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule.Find("Sub knop_vervolg_Click(","","niet ") & "gevonden
End Sub4.6.2 ActiveX gebeurteniscode lezen Sub ActiveX_gebeurteniscode_lezen ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
End SubMsgBox .Lines(.ProcStartLine("knop_vervolg_Click",0), .ProcCountLines("knop_vervolg_Click",0))
End with4.6.3 ActiveX gebeurteniscode toevoegen Sub ActiveX_gebeurteniscode_toevoegen() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
End Sub.InsertLines .CreateEventProc("Click", "knop_vervolg") + 1,vbTab & "MsgBox " & Chr(34) & "Je hebt knop_vervolg aangeklikt"
End With4.6.4 ActiveX gebeurteniscode kopiëren analoge objecten in hetzelfde werkblad met identieke code (bijv. tekstvak1 en tekstvak2)Sub ActiveX_gebeurteniscode_kopie() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
End Sub.AddFromString replace( .Lines(.ProcStartLine("tekstvak1_Change",0), .ProcCountLines("tekstvak1_Change",0)),"tekstvak1","tekstvak2")
End WithSub ActiveX_gebeurteniscode_kopiëren2() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule
End Subc00 = .Lines(.ProcStartLine("tekstvak1_Change",0), .ProcCountLines("tekstvak1_Change",0))
End WithThisWorkbook.VBProject.VBComponents("Blad2").CodeModule.AddFromString c00 4.6.5 ActiveX-gebeurteniscode verplaatsen With ThisWorkbook.VBProject with .VBComponents("Blad1").codemodule
End Withc00 =.lines(.ProcStartLine("knop_vervolg_Click",0), .ProcCountLines("knop_vervolg_Click",0))
end with.DeleteLines .ProcStartLine("knop_vervolg_Click",0), .ProcCountLines("knop_vervolg_Click",0) .VBComponents("Blad2").codemodule.AddFromString c0. 4.6.6 ActiveX gebeurteniscode vervangen Sub ActiveX_code_vervangen1() With ThisWorkbook.VBProject.VBComponents("Blad1").codemodule .ReplaceLine .ProcStartLine("knop_vervolg_Click",0), Replace(.Lines(.ProcStartLine("knop_vervolg_Click",0), 1), "_vervolg", "_einde")
End With
End SubSub ActiveX_code_vervangen2() With ThisWorkbook.VBProject.VBComponents("Blad1").CodeModule .DeleteLines .ProcStartLine("knop_vervolg_Click",0) + 1, .ProcCountLines("knop_vervolg_Click",0) - 2
End With
End Sub.InsertLines .ProcStartLine("knop_vervolg_Click",0) + 1,"c00 = " & Chr(34) & "Dit is de nieuwste tekst" 4.6.7 ActiveX-gebeurteniscode verwijderen Sub ActiveX_code_verwijderen() With ThisWorkbook.VBProject.VBComponents("Blad1").codemodule
End Sub.DeleteLines .ProcStartLine("knop_vervolg_Click",0), .ProcCountLines("knop_vervolg_Click",0)
End With
5.3.1 Alle eventprocedures in een Userform De startregel van iedere gebeurtenisprocedure in een userform bevat ' Sub Userform_'Sub alle_eventprocedures_in_userform() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End SubMsgBox join(filter( split(.Lines(1, .CountOfLines),vbCrLf),"Sub UserForm_"),vbLf)
End With5.3.2 Gebeurtenisprocedure zoeken Sub eventprocedure_zoeken() msgbox"Userform_Initialize" & iif(ThisWorkbook.VBProject.VBComponents("invoer").CodeModule.Find("Sub Userform_Initialize(", 1, 1, -1, -1),"", "niet") & "gevonden"
End Sub5.3.3 Gebeurtenisprocedure lezen Sub eventprocedure_lezen() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End Subc01 = .Lines(.ProcStartLine("Userform_Initialize", 0), .ProcCountLines("Userform_Initialize", 0))
End With5.3.4 Gebeurtenisprocedure verwijderen Sub eventprocedure_verwijderen() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End Sub.DeleteLines .ProcStartLine("Userform_Initialize",0),.ProcCountlines("Userform_Initialize",0)
End With5.3.5 Gebeurtenisprocedure toevoegen Sub eventprocedure_toevoegen() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End Sub.InsertLines .CreateEventProc("Initialize", "Userform") + 1,vbTab & "MsgBox " & Chr(34) & "Dit is een nieuw werkboek"
End With5.3.6 Gebeurtenisprocedure kopiëren Een combinatie van een gebeurtenisprocedure lezen en schrijven.Sub eventprocedure_kopiëren() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End Subc01= .Lines(.ProcStartLine("Userform_Initialize",0),.ProcCountlines("Userform_Initialize",0))
End WithWith Workbooks(2).VBProject.VBComponents("invoer").CodeModule .AddFromString c01
End With5.3.7 Gebeurtenisprocedure verplaatsen Een combinatie van een gebeurtenisprocedure lezen, schrijven en verwijderen.Sub eventprocedure_verplaatsen() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End Subc01= .Lines(.ProcStartLine("Userform_Initialize",0),.ProcCountlines("Userform_Initialize",0))
End With.deletelines .ProcStartLine("Userform_Initialize",0),.ProcCountlines("Userform_Initialize",0) With Workbooks(2).VBProject.VBComponents("invoer").CodeModule .AddFromString c01
End With5.4 Besturingselement in Userform 5.4.1 Alle besturingselementen Sub alle_besturingselementen() For Each ct In ThisWorkbook.VBProject.VBComponents("invoer").Designer.Controls
End Subc01 = c01 & vbLf & ct.Name
Nextmsgbox c01 , , "besturingselementen in userform" Sub Userform_alle_besturingselementen() For Each ct InUserForm1.Controls
End Subc01 = c01 & vbLf & ct.Name
NextMsgBox c01, , "besturingselementen in" &UserForm1.Name 5.4.2 Besturingselement toevoegen Sub Userform_besturingselement_toevoegen() With ThisWorkbook.VBProject.VBComponents("invoer").Designer.Controls.Add("forms.commandButton.1", "knop_einde")
End Sub.Caption = "Stop"
End With.Top =120 .Left =120 Sub Userform_tekstvak_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.Textbox.1").Name = "tekst_1"
End SubSub Userform_keuzerondje_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.OptionButton.1").Name = "keus_1"
End SubSub Userform_selectievak_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.CheckBox.1").Name = "selectie_1"
End SubSub Userform_bijschrift_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.Label.1").Name = "bijschrift_1"
End SubSub Userform_opdrachtknop_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.CommandButton.1").Name = "opdracht_1"
End SubSub Userform_wisselknop_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.ToggleButton.1").Name = "wissel_1"
End SubSub Userform_kringveld_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.SpinButton.1").Name = "spinner_1"
End SubSub Userform_keuzelijst_met_invoervak_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.ComboBox.1").Name = "uitklap_1"
End SubSub Userform_keuzelijst_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.ListBox.1").Name = "keuzen_1"
End SubSub Userform_groepsvak_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.Frame.1").Name = "kader_1"
End SubSub Userform_tabstrook_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.TabStrip.1").Name = "tab_1"
End SubSub Userform_multipage_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.MultiPage.1").Name = "multi_1"
End SubSub Userform_schuifbalk_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.ScrollBar.1").Name = "schuif_1"
End SubSub Userform_afbeelding_toevoegen() ThisWorkbook.VBProject.VBComponents("invoer").designer.Controls.Add("forms.Image.1").Name = "plaatje_1"
End Sub5.4.3 Besturingselement kopiëren van Userform1 ("invoer") naar Userform2 ("invoer2")Sub Userform_besturingselement_kopiëren() With ThisWorkbook.VBProject
End SubWith .VBComponents("invoer").Designer
End With.Controls("knop_einde").SetFocus
End With.Copy .VBComponents("invoer2").Designer.Paste 5.4.4 Besturingselement hernoemen Sub Userform_besturingselement_hernoemen() With ThisWorkbook.VBProject.VBComponents("invoer")
End Sub.Designer.Controls("knop_einde").Name = "knop_slot"
End With5.4.5 Besturingselement verwijderen Sub Userform_besturingselement_verwijderen() With ThisWorkbook.VBProject.VBComponents("invoer")
End Sub.Designer.Controls.Remove "knop_einde"
End With5.4.6 Besturingselement gebeurtenissen 5.4.6.1 Alle Besturingselement-gebeurteniscode van een bepaalde besturingselement Sub Userform_alle_besturingselementcode_van_een_bepaald_besturingselement() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End Subsn = Filter(Split(.Lines(1, .countoflines), vbCrLf), "Sub TextBox1_")
End WithFor j = 0 To UBound(sn)(br/> sn(j) = .Lines(.ProcStartLine(Split(Split(sn(j), "Sub ")(1), "(")(0), 0), .ProcCountLines(Split(Split(sn(j), "Sub ")(1), "(")(0), 0))
Next5.4.6.2 Besturingselement-gebeurteniscode zoeken Sub besturingselement_code_zoeken() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End SubMsgBox "knop_einde_Click gebeurtenis" & iif(.Find("Sub knop_einde_Click("),"","niet ") & "gevonden" End with5.4.6.3 Besturingselement-gebeurteniscode lezen Sub besturingselement_code_lezen() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End SubMsgBox .Lines(.ProcStartLine("knop_einde_Click",0), .ProcCountLines("knop_einde_Click",0))
End with5.4.6.4 Besturingselement-gebeurteniscode toevoegen. Sub besturingselementcode_toevoegen() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End Sub.InsertLines .CreateEventProc("Click","knop_einde")=1,"MsgBox " & chr(34) & "Controleer alle gegevens"
End With5.4.6.5 Besturingselement-gebeurteniscode kopiëren de gebeurteniscode kopiëren van Userform1 ("invoer") naar Userform2 ("invoer2")Sub besturingselement_code_kopie() With ThisWorkbook.VBProject
End SubWith .VBComponents("invoer").CodeModule
End withc00 = .Lines(.ProcStartLine("knop_einde_Click",0), .ProcCountLines("knop_einde_Click",0))
End With.VBComponents("invoer2").CodeModule.AddFromString c00 Sub besturingselement_code_kopie2() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End Sub.AddFromString replace(.Lines(.ProcStartLine("tekstvak1_Change",0), .ProcCountLines("tekstvak1_Change",0)),"tekstvak1","tekstvak2")
End With5.4.6.6 Besturingselement-gebeurteniscode vervangen De begin- en sluitregel van de de gebeurtenisprocedure blijven staat; de code ertussen wordt vervangen.Sub besturingselement_code_vervangen() With ThisWorkbook.VBProject.VBComponents("invoer").CodeModule
End Sub.ReplaceLines .ProcStartLine("knop_einde_Click",0) + 1, .ProcCountLines("knop_einde_Click",0) - 2, .ProcStartLine("knop_einde_Click",0) + 1,"MsgBox " & Chr(34) & "Dit is de nieuwste tekst"
End With5.4.6.7 Besturingselement-gebeurteniscode aanpassen Sub besturingselement_code_aanpassen() With ThisWorkbook.VBProject.VBComponents("invoer").codemodule
End Sub.ReplaceLine .ProcStartLine("knop_einde_Click",0), Replace(.Lines(.ProcStartLine("knop_einde_Click",0), 1), "_einde", "_slot")
End With5.4.6.8 Besturingselement-gebeurteniscode verwijderen Sub besturingselement_code_verwijderen() With ThisWorkbook.VBProject.VBComponents("invoer").codemodule
End Sub.DeleteLines .ProcStartLine("knop_vervolg_Click",0), .ProcCountLines("knop_vervolg_Click",0)
End With |