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:
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)....
Alle suggesties zijn welkom....
mvg,
Aat
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