Discussion:
[Exc95] MsgBox Fehlerwert auswerten
(zu alt für eine Antwort)
Erich Wöger
2015-11-17 15:30:17 UTC
Permalink
Hallo NG,
ich brauch mal wieder einen guten Rat in einem simplen Laien-Makro.
Im folgenden Teil eines Makros erhalte ich keinen Err-Wert, den ich
auswerten kann.
Ich erhalte in der Überwachung für Err immer 0. Was mache da falsch?

Sub drucken()

'drucken Makro
' Makro am 15.11.2015 von a aufgezeichnet
'Welche Seite soll gedruckt werden

On Error GoTo Fehler
Seite = 0

Beginn: |
|hier der funktionierende Text
|
Fehler:
MsgBox "Es wurde kein Wert eingegeben oder abgebrochen !" & vbCr & _
" Wollen Sie es nochmal versuchen ?" & vbCr & " dann drücken Sie
Wiederholen", vbRetryCancel

If Err = 0 Then
GoTo Ende
Else
GoTo Beginn
End If
Err = 0

End Sub
Claus Busch
2015-11-17 15:41:23 UTC
Permalink
Hallo Erich,
Post by Erich Wöger
Sub drucken()
'drucken Makro
' Makro am 15.11.2015 von a aufgezeichnet
'Welche Seite soll gedruckt werden
du hast leider nicht den kompletten Code hier zur Verfügung gestellt.
Aber wie es aussieht, verwendest du eine InputBox zur Eingabe der
Seitenzahl. Dann musst du diese Inputbox abfragen
Ist nichts eingegeben, ist der Wert 0, wurde Abbrechen gedrückt ist er
FALSE.


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Erich Wöger
2015-11-17 16:47:10 UTC
Permalink
Hallo Claus, Sorry, hab falschen Antwortbutton gedrückt
Post by Claus Busch
Hallo Erich,
Post by Erich Wöger
Sub drucken()
'drucken Makro
' Makro am 15.11.2015 von a aufgezeichnet
'Welche Seite soll gedruckt werden
du hast leider nicht den kompletten Code hier zur Verfügung gestellt.
Aber wie es aussieht, verwendest du eine InputBox zur Eingabe der
Seitenzahl. Dann musst du diese Inputbox abfragen
Ist nichts eingegeben, ist der Wert 0, wurde Abbrechen gedrückt ist er
FALSE.
Ja, das ist richtig, die InpuBox-Abfrage arbeitet einwandfrei und wenn keine
Zahl eingegeben wird erfolgt Sprung zu Fehler: mit der MsgBox. Und da will
ich nun auswerten, ob Wiederholen gedrückt wird mit einem Sprung zu Beginn:,
oder Abbrechen mit Sprung zu Ende: .
Aber die MsgBox liefert keinen Fehlercode zum Auswerten. Da hakts bei mir.

Mit freundlichen Grüßen
Erich Wöger
Claus Busch
2015-11-17 17:03:54 UTC
Permalink
Hallo Erich,
Post by Erich Wöger
Ja, das ist richtig, die InpuBox-Abfrage arbeitet einwandfrei und wenn keine
Zahl eingegeben wird erfolgt Sprung zu Fehler: mit der MsgBox. Und da will
ich nun auswerten, ob Wiederholen gedrückt wird mit einem Sprung zu Beginn:,
oder Abbrechen mit Sprung zu Ende: .
Aber die MsgBox liefert keinen Fehlercode zum Auswerten. Da hakts bei mir.
man kann auf der Inputbox beide Button drücken, ohne dass das ein Fehler
ist. Du musst den Inhalt abfragen. Bei einer Application.InputBox
bekommst du eine Fehlermeldung im Blatt, wenn keine Zahl eigegeben wurde
aber OK gedrückt wird. Du musst eigentlich nur das Abbrechen abfragen:

Dim Seite As Integer

Seite = Application.InputBox("Bitte Seitenzahl eingeben", "Seite",
Type:=1)

If Seite = 0 Then
MsgBox "Es wurde Abbrechen gedrückt"
Exit Sub
End If

Das ist nur das Grundkonzept. Du musst es noch für dich anpassen.


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Erich Wöger
2015-11-17 17:15:18 UTC
Permalink
Post by Claus Busch
Hallo Erich,
Post by Erich Wöger
Ja, das ist richtig, die InpuBox-Abfrage arbeitet einwandfrei und wenn keine
Zahl eingegeben wird erfolgt Sprung zu Fehler: mit der MsgBox. Und da will
ich nun auswerten, ob Wiederholen gedrückt wird mit einem Sprung zu Beginn:,
oder Abbrechen mit Sprung zu Ende: .
Aber die MsgBox liefert keinen Fehlercode zum Auswerten. Da hakts bei mir.
man kann auf der Inputbox beide Button drücken, ohne dass das ein Fehler
ist. Du musst den Inhalt abfragen. Bei einer Application.InputBox
bekommst du eine Fehlermeldung im Blatt, wenn keine Zahl eigegeben wurde
Dim Seite As Integer
Seite = Application.InputBox("Bitte Seitenzahl eingeben", "Seite",
Type:=1)
If Seite = 0 Then
MsgBox "Es wurde Abbrechen gedrückt"
Exit Sub
End If
Das ist nur das Grundkonzept. Du musst es noch für dich anpassen.
Die Seitenabfrage funktioniert ja einwandfrei, aber die MsgBox enthält ja am
Ende auch ein "vbRetryCancel",

Liefert denn eine MsgBox bei "Wiederholen" oder "Abbrechen" keine Werte ?

Mit freundlichen Grüßen
Erich Wöger
Claus Busch
2015-11-17 17:22:13 UTC
Permalink
Hallo Erich,
Post by Erich Wöger
Die Seitenabfrage funktioniert ja einwandfrei, aber die MsgBox enthält ja am
Ende auch ein "vbRetryCancel",
Liefert denn eine MsgBox bei "Wiederholen" oder "Abbrechen" keine Werte ?
sorry, da habe ich dich falsch verstanden.
Wiederholen ist 4
Abbrechen ist 2


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Erich Wöger
2015-11-17 17:30:55 UTC
Permalink
Post by Claus Busch
Hallo Erich,
Post by Erich Wöger
Die Seitenabfrage funktioniert ja einwandfrei, aber die MsgBox enthält ja am
Ende auch ein "vbRetryCancel",
Liefert denn eine MsgBox bei "Wiederholen" oder "Abbrechen" keine Werte ?
sorry, da habe ich dich falsch verstanden.
Wiederholen ist 4
Abbrechen ist 2
Ja, genau solche Werte erwarte ich unter "Err", werden bei mir aber nicht
angezeigt.
Mit welcher Variablen kann ich die Werte denn bekommen?

In einem Forumbeitrag hab ich diese Tabelle gefunden :
Schalter:
Wert Konstantenname Beschreibung
0 vbOKOnly OK
1 vbOKCancel OK - Abbrechen
2 vbAbortRetry Wiederholen - Ignorieren
3 vbYesNoCancel Ja - Nein - Abbrechen
4 vbYesNo Ja - Nein
5 vbRetryCancel Wiederholen - Abbrechen

Abfrage Schalter
Wert Konstantenname Beschreibung
1 vbOK Klick auf OK
2 vbCancel Klick auf Abbrechen ---> da ist sie 2
3 vbAbort Klick auf Abbrechen
4 vbRetry Klick auf Wiederholen ---> da ist die 4
5 vbIgnore Klick auf Ignorieren
6 vbYes Klick auf Ja
7 vbNo Klick auf Nein

Hinweis / Signal
Wert Konstantenname Beschreibung
16 vbCritical Kritische Meldung
32 vbQuestion Fragezeichen
48 vbExclamation Warnung
64 vbInformation Information

Mit freundlichen Grüßen
Erich Wöger
Claus Busch
2015-11-17 17:33:41 UTC
Permalink
Hallo Erich,
Post by Erich Wöger
Ja, genau solche Werte erwarte ich unter "Err", werden bei mir aber nicht
angezeigt.
Mit welcher Variablen kann ich die Werte denn bekommen?
probiere es so:

Dim Antw As Integer

Antw = MsgBox("Wollen Sie es nochmal versuchen,dann drücken Sie
Wiederholen ", _
vbRetryCancel, "Frage")

If Antw = vbRetry Then
GoTo Beginn
Else
GoTo Ende
End If


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Erich Wöger
2015-11-18 00:37:33 UTC
Permalink
Post by Claus Busch
Hallo Erich,
Post by Erich Wöger
Ja, genau solche Werte erwarte ich unter "Err", werden bei mir aber nicht
angezeigt.
Mit welcher Variablen kann ich die Werte denn bekommen?
Dim Antw As Integer
Antw = MsgBox("Wollen Sie es nochmal versuchen,dann drücken Sie
Wiederholen ", _
vbRetryCancel, "Frage")
If Antw = vbRetry Then
GoTo Beginn
Else
GoTo Ende
End If
Heureka - genau das war's.
Ich wußte nicht oder nicht mehr, daß man auch eine MsgBox mit einer davor
gesetzten Variable ( hier z.B.Antw = .. ) abfragen kann.
Ich war auf "Err" fixiert und erwartete da eine Wertausgabe. ( wie war das
mit dem Igel und der Bürste??)

Ich mußte noch am Anfang ein On Error Resume Next einfügen, weil sonst bei
zweimaligem Abbruch der InputBox ein Laufzeitfehler mit Abbruch auftrat.

Jetzt funktioniert alles wie gewollt.

Wiedereinmal vielen Dank für die stets parate Hilfe.

Mit freundlichen Grüßen
Erich Wöger

Loading...