Application.Displayalerts in anderer Mappe
#11
@Kuwer: Danke, der englische Ausdruck hat es schon klar gemacht.

Code:
Option Explicit
Dim xl As Excel.Application

Sub CrossProc()
   Set xl = New Excel.Application
   With xl
       .DisplayAlerts = False
       .Visible = True
   End With
   
   Debug.Print xl.DisplayAlerts ', xl.ActiveSheet.Name
   
End Sub
In der zweiten Instanz xl ist Displayalerts auch nach Ende von CrossProc auf False.
Erst wenn ich xl derefernziere ist es wieder True
Top
#12
Hi ihr,

das freut mich, dass ich euch so zum heiter diskutieren gebracht habe :).

Ich habe das Problem durch Probieren zwar gelöst, aber vll kann mir kurz einer erklären wieso es so gelöst werden konnte. Liegt es daran, dass die Alerts beim Öffnen einer anderen Mappe automatisch auf true gestellt werden? Ist das so ein "prozessübergreifender Code"?
Kann man also zwei Instanzen offen haben? Die alte Mappe, in der die Displayalerts auf false sind und die neue Mappe, in der sie auf true stehen?

Gruß Tim
Top
#13
Hallo Tim,

meine Demomakros beantworteten Deine Fragen zum Ermitteln der (momentanen) DisplayAlerts-Eigenschaft und zur "Lebensdauer" der Abschaltung dieser.
Leider ignoriertest Du meine Frage zum sehr frühen Zeitpunkt der Deaktivierung. Nur das Drücken des Dankebuttons bringt Dich und andere Antworter nicht unbedingt weiter. Wink
Was das Makro "speichern" macht, blieb (leider) Dein Geheimnis. Undecided

Gruß Uwe
Top
#14
(16.04.2019, 20:06)Storax schrieb: In der zweiten Instanz xl ist Displayalerts auch nach Ende von CrossProc auf False.
Erst wenn ich xl derefernziere ist es wieder True

Ich glaube, dass Dein Beispiel nichts mit "prozessübergreifend" zu tun hat, da es da ja um mehrere Excel-Instanzen geht.
DisplayAlerts ist ja auf die jeweilige Excel-Application, also -Instanz, bezogen.

Gruß Uwe
Top
#15
Hi Uwe,

ich hatte die Diskussion zwischen Ralf, dir und Storax irgendwie so verstanden, dass ihr euch gegenseitig etwas beweist - eure Codes hatte ich nicht verstanden. Auf deine Frage, wieso ich den Befehl so früh im Makro eingebaut habe, hatte ich für mich schon so beantwortet, dass ich zeitgleich schrieb, dass ich ihn nun später eingebaut habe und der Code somit funktioniert :). Aber ich gebe dir recht - ich hätte dir antworten sollen, sorry!

Das Sub speichern kommt als Auslöser für das Problem nicht in Frage, da ich es zum Probieren ausgeklammert habe. Im Prinzip speichert es einfach die Mappe und erstellt eine Sicherheitskopie in einem bestimmten Pfad. Da dieser Pfad nur auf dem Arbeits-PC vorhanden ist, hatte ich diese Codezeile von Anfang an mit einem Hochkomma unbeachtet gelassen.

Ich hatte das so verstanden, dass du bereits weißt, warum mein erster Code nicht funktioniert hat - dem ist dann nicht so und wir suchen noch immer die Lösung bzw. den Grund, wieso meine Lösung nun funktioniert?

Huh Huh Huh Huh 


Gruß Tim
Top
#16
Hallo Tim,

(16.04.2019, 18:03)EasY schrieb: Nach vielen Versuchen dürfte ich des Rätsels Lösung gefunden haben: Ich habe vor dem Löschen der Blätter das Workbook zunächst aktiviert und dann den Application.Displayalerts = false - Befehl erneut eingegeben.

auf das fett markierte kommt es an.
Im konkreten Fall sollen Löschabfragen unterdrückt werden. Also sollte man es auch genau dort, wo es gebraucht wird, unterdrücken und danach wieder setzen und nicht wahllos irgendwo und wiederholt. Deine Frage, wie Du den Zustand abfragen kannst, dürfte sich gar nicht stellen, wenn Du die Kontrolle über Deinen Code behältst. Wink

Gruß Uwe
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste