Microsoft Office Tutorials and References
In Depth Information
19.13 VBA-Beispiele
Fehler-Logbuch
Kontextmenü
Eine nützliche Programmierhilfe fist das Fehler-Logbuch.
Schreiben Sie alle Fehler in eine Textdatei, die Sie später
leicht überprüfen können. Geben Sie Datum, Zeit und
Auslöser des Fehlers mit an:
Das Makro erstellt ein neues Kontextmenü, legt ein
Symbol darin an und weist diesem Symbol ein Makro zu.
Sub KontextMenueNeu()
Dim NeuesMenü As CommandBarButton
With CommandBars("Cell“)
’Bestehendes Menü löschen
Do While .Controls.Count > 0
On Error Resume Next
.Controls(1).Delete
Loop
’Neues Menü erstellen
Set NeuesMenü = .Controls.Add(msoControlButton)
With NeuesMenü
.Caption = "&Neues Menü“
.OnAction = "Makro1“
End With
End With
End Sub
Public Sub WriteErr()
’Ausgabe von Fehlermeldungen in Log- oder Err-File
Dim strFehlerDatei As String, datnr As Integer
Dim err_mldg As String, pfad As String
’ Freie Dateinummer
datnr = FreeFile
strFehlerDatei = "Fehler-Logbuch.txt“
’ Hier bestimmen Sie den Pfad zum Logbuch
pfad = "C:\Daten\“
’ Datei wird geöffnet
Open pfad & strFehlerDatei For Append As #datnr
’ Auf Fehler überprüfen und eintragen
If Err.Number 0 Then
err_mldg = "Fehler # " & Str(Err.Number) _
& " - ausgelöst von " _
& Err.Source & " Beschr.: " & Err.Description
Print #datnr, "***“; strFehlerDatei; "***“
Print #datnr, Date, Time, err_mldg
Print #datnr, "*******“
Close #datnr
’ Meldung (evtl. abschalten)
MsgBox "Fehler in Logbuch eingetragen“
End If
End Sub
Listing 19.52 Makro für ein Kontextmenü
Dieses Makro fist mit dem Kontextmenü verknüpft:
Sub Makro1()
MsgBox "Menüpunkt gewählt!“
End Sub
Dieses Makro setzt das Kontextmenü in den
Ursprungszustand zurück:
Sub reset()
Application.CommandBars("Cell“).reset
End Sub
Listing 19.50 Das Makro schreibt Fehler in ein Fehlerlogbuch.
Mit diesem Makro testen Sie das Logbuch, der Fehler
wird produziert, wenn der ChDir -Befehl keinen Ordner
»Test« findet:
Makro verzögern
Nicht selten muss ein Makro verzögert werden, damit
eine größere Berechnung, ein Formatierungsaufbau
oder Ähnliches durchgeführt werden kann. Sie können
Ihr VBA-Makro mit For...Next -Schleifen unter
Verwendung entsprechend großer Schleifenzähler verzögern.
Hier eine bessere Lösung: Verwenden Sie die API-Funk-
tion Sleep . Sie bietet die Möglichkeit, die Verzögerung
exakt in Millisekunden zu bestimmen.
Sub ErrTest()
On Error GoTo msgErr_Write
ChDir "Test“
Exit Sub
msgErr_Write:
WriteErr
End Sub
Listing 19.51 Makro zum Testen des Logbuchs
Tragen Sie diese Deklaration in den Deklarationsteil
Ihres Moduls ein:
 
Search JabSto ::




Custom Search