Registriert seit: 25.04.2016
Version(en): 2013
16.04.2019, 20:06
(Dieser Beitrag wurde zuletzt bearbeitet: 16.04.2019, 20:09 von Storax.)
@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
Registriert seit: 28.05.2017
Version(en): 365
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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.
Was das Makro "speichern" macht, blieb (leider) Dein Geheimnis.
Gruß Uwe
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
(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
Registriert seit: 28.05.2017
Version(en): 365
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?
Gruß Tim
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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.
Gruß Uwe