Anzeige
Archiv - Navigation
1808to1812
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Fehlermeldung trotz DisplayAlert False
27.01.2021 12:43:41
Ulli
Hallo Leute,
wie kann es eigentlich sein, dass wenn ich mittels VBA beim Öffnen einer Excel Datei in der Arbeitsmappe befehle, dass keine Fehlermeldung gemacht werden dürfen, trotzdem Fehlermeldungen auftauchen?
Diesen Code hab ich in der Arbeitsmappe verwendet:
Private Sub Workbook_Open()
Application.DisplayAlerts=false
End Sub

Meines erachtens dürfte er dann beim Starten keine Fehlermeldungen mehr anzeigen. Tut er aber trotzdem. Und zwar wird ein spezielles Change Event einer ComboBox aufgerufen das einwandfrei läuft und nur beim Öffnen einen Laufzeitfehler 424 angibt. Wenn man auf schlißen klickt funktioniert alles super, aber ich will die User nicht unnötig beunruhigen.
Hat da irgendjemand einen Idee was ich hier falsch mache?
Liebe Grüße
Ulli

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlermeldung trotz DisplayAlert False
27.01.2021 12:53:53
Werner
Hallo,
das ist eine VBA Fehlermeldung und hat nichts mit Display-Alerts zu tun.
Den Fehler mußt du dann schon im entsprechenden Code behandeln.
Gruß Werner
AW: Fehlermeldung trotz DisplayAlert False
27.01.2021 15:28:13
Daniel
Hi
wie schon geschrieben: DisplayAlerts sind keine Fehlermeldungen, sondern Rückfragen des Systems in regulären Situationen, beispielsweise beim Löschen von Tabellenblättern ("Wollen sie wirklich Löschen?") zur Absicherung oder in einer unklaren Situation.
Diese Rückfragen erscheinen auch, wenn man solche Aktionen per Makro ausführt (wobei man darüber Diskutieren kann, ob das generell sinnvoll ist), und mit DisplayAlerts = False kann man das unterbinden.
Für Fehler gibt's anderes, bspw "On Error Resume Next" um bei einem echten Fehler einfach mit dem nächsten Programmschritt weiter zu machen oder "On Error Goto Sprungmarke" um bei einem Fehler an eine bestimmte Stelle des Codes zu verzweigen.
aber sowas sollte man nur gut überlegt und nicht unbedacht einsetzen.
Gruß Daniel
Anzeige
AW: Fehlermeldung trotz DisplayAlert False
27.01.2021 16:23:29
Yal
Hallo Ulli,
wie Daniel es schreibt, ist richtig.
Mein übliche Vorgehensweise: Aktionen, die ein Fehler verursachen könnten, in separate Sub/Function ablegen, um dort eine gezielte Fehlerbehandlung nach "Try-Catch-Finally"-Muster
Sub HierMacheIchAlles()
Dim Datei
Set Datei = ExcelDatei_oeffnen("C:\temp\test.xlsx")
If Not Datei Is Nothing Then
End If
End Sub
Private Function ExcelDatei_oeffnen(Pfad As String) As Workbook
On Error GoTo Catch
Try:
Application.DisplayAlerts = False
Set ExcelDatei_oeffnen = Workbooks.Open(Pfad)
GoTo Finally
Catch:
'Fehlerbehandlung
msg "Es ist ein Fehler beim Öffnen von " & vbCr & Pfad & vbCr & "passiert.", vbCritical +  _
vbOKOnly
Finally:
'muß auf alle Fälle gemacht werden:
Application.DisplayAlerts = True
End Function
Viel Erfolg
Yal
Anzeige
zu: 'muß auf alle Fälle gemacht werden:
27.01.2021 16:33:55
RPP63
Moin!
Nein, DisplayAlerts muss (entgegen der Online-Hilfe) nicht zurückgesetzt werden.
Es schadet aber natürlich auch nix, es wieder auf true zu setzen. ;)
Gruß Ralf
AW: zu: 'muß auf alle Fälle gemacht werden:
27.01.2021 22:25:32
Yal
Na jut,
eijentlich nutze ick den Try-Catch-Finally eher für kritischere Sache wie ScreenUpdating oder EnabelEvents.
Ich wollte nur kontextbezogen auf DisplayAlerts einrichten.
VG
Yal
AW: zu: 'muß auf alle Fälle gemacht werden:
27.01.2021 23:50:23
Daniel
Screenupdating ist auch unkritisch, das wird ebenfalls automatisch aktiviert (muss ja auch)
Auf den Ausgangszustand gesetzt werden muss neben EnableEvents noch Calculation.
Gruß Daniel
AW: Fehlermeldung trotz DisplayAlert False
27.01.2021 16:59:04
GerdL
Moin Uli,
wenn er nur beim Öffnen nicht laufen soll:
Public stoppen As Boolean
Private Sub ComboBox1_Change()
If stoppen = True Then
stoppen = False
Exit Sub
End If
MsgBox "Hier dien Combobox-Code"
End Sub
Private Sub Workbook_Open()
stoppen = True
End Sub

Gruß Gerd
Anzeige
DisplayAlert kennst du, Feedback nicht o.w.T.
02.02.2021 09:53:05
Werner
AW: DisplayAlert kennst du, Feedback nicht o.w.T.
04.02.2021 13:59:44
Ulli
Liebe Leute,
danke für euer Feedback. Stimmt natürlich, dass ein Display Alert nicht das gleiche ist wie eine Fehlermeldung. Bin halt noch blutiger Anfänger.
Ich frag mich nur wie es überhaupt sein kann, dass Change Events von ComboBoxen in irgendwelchen Tab's einfach mal gestartet werden ohne dass diese tatsächlich geändert wurden.
Dadurch ploppen beim Start Fehlermeldungen auf, obwohl der Code eigentlich funktioniert. Ich hab mir dazu noch andere Themen hier im Forum durchgelesen bezüglich Event-Durchlauf beim Starten verhindern, aber das kapier ich leider einfach nicht wie das funktionieren soll.
Ich habs mit Gerd's Tipp versucht und einen Error Handler mit Exit Sub eingebaut, aber bei 100 Tab's und zahlreichen ComboBoxen dauert das leider ziemlich lange bis er alles abgearbeitet hat.
Gibt es keinen für einen Laien wie mich umsetzbaren Weg wie man es schafft ein Change Event nur dann durchzuführen wenn es tatsächlich auch durchgeführt wird?
Liebe Grüße
Ulli
Anzeige
AW: DisplayAlert kennst du, Feedback nicht o.w.T.
04.02.2021 14:24:39
ralf_b
für Laien gibt es nur einen Weg. Kein Laie mehr zu sein. Sprich eigne dir Wissen an. Ohne die Kenntnisse über die Zusammenhänge werden die Fragenzeichen nur mehr und größer.
Ich weis nicht was die Vorposter dir geschrieben haben. Aber sobald du im Program einem Control einen Wert zuweist oder z.b. nur den Index der Combobox auf einen Startwert setzt, wird ein Change_Ergeignis ausgelöst. Macht ja auch Sinn. Um zu verhindern das dieser Wert im Code des Changeevents Fehler erzeugt, solltest du dort den Wert prüfen bevor er verarbeitet wird.
für den Programmstart könnte man eine globale Variable zu Beginn des Initialize-oder Activatesub setzen und am Ende der Programmvorbereitung die Variable auf einen anderen Wert setzen.
im Changeevent der Controls wird nur geprüft ob die globale Variable den entsprechenden Wert beinhaltet und dann wird der Code ausgeführt oder nicht.
viellicht hilft dir aber auch das application.enableevents = false/true
gruß
rb
Anzeige

78 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige