• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Regelnummer toevoegen aan VBA-code

AatB

Gebruiker
Lid geworden
15 dec 2007
Berichten
253
Goedemorgen,

in oude versie's van Excel kon je instellen of je een regelnummer wilde toevoegen aan je VBA code.
Ik gebruik nu Office 365 en daar gaat dat niet meer.

Ik wil dit gebruiken om te bepalen waar en welke foutmelding ontstaat.
Ik zoek namelijk al lang naar een mogelijkheid om de macro waar de fout ontstaat automatisch te bepalen.
Nu gebruik ik:

Code:
Sub Test
    MacroNaam = "Test"
    On Error Goto Error_Log

'Code

    On Error GoTo 0
    Exit Sub
    
Error_Log:
    Call ErrorLog(MacroNaam) 'Foutinfo wordt wegegschreven in een access database 
EndSub

Om dit voor alle macro's te maken is dit vrij veel typewerk.
Ik zoek een mogelijkheid om de macronaam automatisch te bepalen.
Dit kan alleen als er regelnummers gebruikt worden, want dan kan ik bepalen op welke regel de fout ontstaat en door de regels van de module te lopen ook de macronaam bepalen.
Als ik het regelnummer heb, hoef ik alleen nog door de module te lopen om te bepalen welke macro ik het laatst tegenkwam voordat ik op de het betreffende regelnummer ben.

Bijvoorbeeld met gebruik van deze code (op internet gevonden)....
Code:
Sub TelRegelsPerProcedure()
    
    Dim VBComponent As Object
    Dim CodeModule As Object
    Dim ProcedureName As String
    Dim RegelsTelling As Long
    Dim i As Long
    
    ' Loop door alle VBA-modules in het Excel-werkboek
    For Each VBComponent In ThisWorkbook.VBProject.VBComponents
        ' Controleer of het een standaardmodule of een klassemodule is
        If VBComponent.Type = 1 Or VBComponent.Type = 2 Then
            ' Referentie naar de code-module verkrijgen
            Set CodeModule = VBComponent.CodeModule
            
            ' Loop door elke regel in de code-module
            For i = 1 To CodeModule.CountOfLines
                ' Als een procedure wordt gevonden, tel dan het aantal regels
                If left(Trim(CodeModule.Lines(i, 1)), 8) = "Sub" Or left(Trim(CodeModule.Lines(i, 1)), 9) = "Function" Then
                    ProcedureName = Mid(Trim(CodeModule.Lines(i, 1)), 4)
                    RegelsTelling = 0
                ElseIf left(Trim(CodeModule.Lines(i, 1)), 10) = "End Sub" Or left(Trim(CodeModule.Lines(i, 1)), 13) = "End Function" Then
                    ' Voeg het aantal regels toe aan de totale telling en geef dit weer in de Immediate Window
                    Debug.Print "Procedure: " & ProcedureName & ", Aantal regels: " & RegelsTelling
                ElseIf Trim(CodeModule.Lines(i, 1)) <> "" Then
                    ' Als het geen lege regel is, tel dan deze regel
                    RegelsTelling = RegelsTelling + 1
                End If
            Next i
        End If
    Next VBComponent
End Sub

Alle suggesties zijn welkom....

mvg,

Aat
 
Ik kan me niet herinneren dat in enige Excelversie regelnummers konden worden toegevoegd.

Omdat procedures (macro's en funkties) geen aparte eenheden zijn, maar onderdeel van een macromodule is de positie van een 'regel' altijd een regeleigenschap van de macromodule (vbComponent)
 
Laatst bewerkt:
In een macro kun dmv "1:" het nummer 1 toevoegen aan een regel
Vroeger had MZ Tool daar iets voor geschreven om dit automatisch te doen. Dat was toen gratis.
Nu helaas niet meer.
 
Terug
Bovenaan Onderaan