Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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
Inhaltsverzeichnis

event schließen der Arbeitsmappe

event schließen der Arbeitsmappe
01.02.2013 07:47:07
Otto
Hallo,
ich möchte mit

Private Sub Workbook_Open()
Sheets("Tabelle1").EnableCalculation = False
End Sub

verhindern, dass gewissen Blätter meine Arbeitsmappe ausbremsen.
Jetzt fehlt mir aber noch folgendes wissen:
1. wie lege ich ein Array mit Blattnamen an, so dass automatisch für jedes Element dieser Befehl ausgeführt wird
2. wie lautet das Gegenstück zu Workbook_Open(), so dass ich alles beim schließen wieder auf den Standard der Arbeitsmappe setzen kann.
Vielen Dank

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: event schließen der Arbeitsmappe
01.02.2013 08:51:46
Rolf
Guten Morgen Otto,
so sollte es klappen:

Private Sub Workbook_Open()
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
For i = 1 To ActiveWorkbook.Sheets.Count
With Sheets(i)
.Activate
.Application.Calculation = False
End With
Next i
i = 1
Sheets(i).Activate
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
For i = 1 To ActiveWorkbook.Sheets.Count
With Sheets(i)
.Activate
.Application.Calculation = True
.Calculate
End With
Next i
i = 1
Sheets(i).Activate
ActiveWorkbook.Save
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Anzeige
AW: event schließen der Arbeitsmappe
01.02.2013 08:55:36
Otto
Vielen Dank!
Bei dieser Version werden alle von der Berechnung ausgeschlossen?
Ich würde gerne die Blattnamen vorgeben können, für welche der Befehl ausgeführt werden soll. Die anderen sollen normal berechnen.

AW: event schließen der Arbeitsmappe
01.02.2013 09:01:10
Rolf
Hallo Otto,
"Nachkarten" mag ich nicht besonders. Sorry.
Vielleicht findet sich jemand anderes im Forum, der dir weiter helfen kann. Ich muss jetzt leider los, um ein paar Termine wahrzunehmen. Ich setze deine Frage wieder auf "noch offen"
Gruß, Rolf

AW: event schließen der Arbeitsmappe
01.02.2013 08:51:51
Otto
ich habe das nun erstmal für 3 Blätter einfach eingetragen
Sheets("Tabelle1").EnableCalculation = False
das Problem nun kann ich nicht mal mit F9 berechnen lassen. Gibt es auch eine alternative, damit ich wenigsten manuell berechnen lassen kann?

Anzeige
AW: event schließen der Arbeitsmappe
01.02.2013 08:55:51
Rolf
Hallo Otto,
seltsam. Bei mir funktioniert es mit F9 trotz Application.Calculation = False.
Gruß, Rolf

AW: event schließen der Arbeitsmappe
01.02.2013 09:04:02
Otto
Hallo Rolf,
wenn ich schließe und neu öffne übernimmt er die Änderung auch bei den Berechnungen. Ich habe die Funktion in Arbeitsblatt eingetragen. Liegts vlt. daran?

AW: event schließen der Arbeitsmappe
01.02.2013 09:28:11
Rolf
Hallo Otto,
du hast Glück; mein erster Termin wurde söben storniert.
1. die Makros musst du unter "Diese Arbeitsmappe" speichert:
==> Entwicklertools ==> Visual Basic ==> Diese Arbeitsmappe (doppelt anklicken)
2. Welche Worksheets sollen denn für die automatische Berechnung freigegeben werden? Die Sheets deiner Datei sind unter "Diese Arbeitsmappe" aufgelistet (Tabelle1, Tabelle2...).
Gruß, Rolf

Anzeige
AW: event schließen der Arbeitsmappe
01.02.2013 09:47:02
Otto
Ja, da hatte ich es rein kopiert. Komisch, dass es mit der manuellen Berechnung bei mir nicht funktioniert.
Es sind drei Blätter ( von aktuell 12) die ich aktuell von der Berechnung ausschließen möchte. Schön wäre wenn ich ein String Feld anlegen könnte, indem die Namen der Blätte sind, welche ausgeschlossen sind.
Mein Versuch war leider gescheitert:
Dim deaktiviert() As String
deaktiviert = Array("t1","t2","t3")
For Each e In deaktiviert
Sheets(e).EnableCalculation = False
Next e

AW: event schließen der Arbeitsmappe
01.02.2013 10:02:32
Rolf
Hallo Otto,
änderst du denn ständig die Sheets, die automatisch kalkuliert werden sollen? Wenn nicht, dann sag mir doch bitte(!), welche Tabellen zur automatischen Kalkulation freigegeben sein sollen.
Muss gleich weg. Könnte eine kleine Weile dauern, bis ich mich wieder melde.
Gruß, Rolf

Anzeige
AW: event schließen der Arbeitsmappe
01.02.2013 10:12:50
Otto
Hallo Rolf,
hätte ich vielleicht dazu sagen sollen. Ein Blatt ist so aufgebaut, dass es sich die Bezüge indirekt aufbaut. Dort stehen dann unter anderem die Namen der Blätter. Die Blätter werden sich ständig ändern , welche danach kommen. Im Moment ist es so, dass ich 3 hinzugefügt habe und seitdem die ganze Mappe total langsam ist, so dass man nicht mehr normal mit arbeiten kann. (unten im Status steht immer etwas von Datentabllen und Iteration während dessen)
Vielen Dank für die Hilfe
Otto

AW: event schließen der Arbeitsmappe
01.02.2013 11:55:10
Rolf
Hallo Otto, weiter geht's.
Es ist recht mühsam, im Dunkeln herum zu tapsen; da übersieht man leicht den einen oder anderen Stolperstein. Hilfreich wäre es, wenn du mir mal deine Datei ggf. in Kurzfassung/mit Dummy-Daten zur Verfügung stellen könntest. Zur Not reichen auch Arbeitsblätter ohne Daten.
Geht aus dem Sheet, in dem du die "Blätter" definiert hast, hervor, welche davon automatisch kalkuliert werden sollen bzw. welche nicht? Könntest du diese Blätter ggf. in der Zelle rechts daneben entsprechend kennzeichnen (z.B. ein "z" für "automatische Kalkulation zulassen")?
Gruß, Rolf

Anzeige
AW: event schließen der Arbeitsmappe
01.02.2013 13:47:57
Otto
Hallo Rolf,
ich darf die Datei leider nicht weitergeben.
Aber wenn ich mir nun eine andere Mappe hernehmen würde mit "Blatt1" bis "Blatt10", so würde ich einfach einen Mechanismus haben wollen, welcher z.B. "Blatt7" bis "Blatt10" von der Berechnung deaktiviert.
So wie die Idee hinter:
Dim deaktiviert() As String
deaktiviert = Array("t1","t2","t3")
For Each e In deaktiviert
Sheets(e).EnableCalculation = False
Next e
nur dass dies leider nicht funktionierte.
Da aber bei mir, aus welchen Grund auch immer, keine manuelle Berechnung erfolgt ist dieser Ansatz wahrscheinlich eh ein Sackgasse. Wenn in meinem Code nicht ein einfacher Fehler ist (vlt. muss man das Array wieder in String zurück verwandeln?) mach dir bitte keine weitere Mühe.
Nach dem ich die automatische berechnung für Datentabellen deaktiviert habe lässt es sich ganz gut nutzen. Ich probieren nun mal zu lernen warum das Datentabellen sind und was ich machen muss damit sie keine mehr sind. Dann sollte es vlt. auch zügiger gehen.
Danke Dir nochmals

Anzeige
AW: event schließen der Arbeitsmappe
01.02.2013 11:10:10
Otto
Ich habe nun gelernt, dass es Datentabellen gibt und diese u.U. einfach langsam sind. Die neune Blätter sind Datentabellen. Helfen tut mir nun die Datentabellen allg. von der automatischen Berechnung auszuschließen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige