Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro an Standard-Neuberechnen (F9) anknüpfen

Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 15:00:28
Michael
Hallo xl Gemeinde,
kann man ein Makro an die Neuberechenfunktion von Excel anknüpfen. Sprich wenn man F9 drückt in der Arbeitsmappe dann soll danach noch ein Makro ausgeführt werden. Wenn ja, wie macht man das? Ich gerade auf dem Schlauch.
Gruß
Michael

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

Betreff
Datum
Anwender
Anzeige
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 15:03:41
Frager
Hallo Michael
warum F9 drücken, Excel rechnet doch automatisch (falls nicht deaktiviert)?
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 15:06:41
Michael
Hallo Frager,
weil im Hintergrund ein OLAP-Datenbank angeknüpft ist und die Berechnung der Tabelle ca. 40 sec dauert. Daher wäre es sehr nervig, wenn automatisches Berechnen angeschaltet wäre. Dies ist bewusst deaktiviert.
Gruß
Michael
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 15:09:26
Antworter
Hallo Michael
dann erweitere doch dein "Datenbankanknüpfmakro" und setz die Berechnung wieder auf automatisch und hänge gleichzeitig dein weiteres Makro an.
Gruss Antworter
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 15:11:33
UweD
Hallo
- rechtsclick auf den Tabellenblattreiter unten
- Code anzeigen
- Die Zeilen dort reinkopieren

Private Sub Worksheet_Calculate()
MsgBox "Jetzt habe ich gerechnet"
'Dein Makrocode
End Sub

Wenn du nun F9 =Neuberechnen Drückst, wird der Code ausgeführt
Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 16:06:31
Michael
Hallo UweD,
soweit ganz gut. Jetzt habe ich aber nach dem Sortiren nochmal ein Calculate drangehängt, dies ist notwendig, damit auf den anderen Tabellenblätter die neu sortierten Werte angezeigt werden. Logischer Weise habe ich jetzt eine Schleife gemacht. Wie kann ich das unterbrechen. Abfolge sollte sein:
F9 -> Neuberechnen
Sortier Makro
Erneutes Neuberechnen ohne wieder von vorne anzufangen

Private Sub Worksheet_Calculate()
MsgBox "Jetzt habe ich gerechnet"
Range("T34:AB268").Select
Selection.Sort Key1:=Range("AB34"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Calculate
End Sub

Anzeige
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 16:11:27
Andi
Hi,
so:
Application.EnableEvents = False
Calculate
Application.EnableEvents = True
Schönen Gruß,
Andi
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 16:19:23
Michael
Hallo Andi,
funktioniert im Worksheet wunderbar. So jetzt kann es ja sein, dass F9 auch gedrückt werden kann, wenn man sich in anderen Worksheets befindet. Dann kommt Excel nämlich mit einer Fehlermeldung hoch.
Daher hab ich das ganze genommen und intuitiv in ein Modul gesteckt und das Private weggelöscht. Aber nun geht nichts mehr bzw. Excel führt nur die Neuberechnung aus. Naja vielleicht kann nicht ganz so intutitiv bei VBA vorgehen. Wer kann mir hier nochmal helfen?
Gruß
Michael

Sub Worksheet_Calculate()
MsgBox "Jetzt habe ich gerechnet"
Range("T34:AB268").Select
Selection.Sort Key1:=Range("AB34"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = False
Calculate
Application.EnableEvents = True
End Sub

Anzeige
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 16:28:15
Andi
Hi,
wenn das Makro in allen Blättern laufen soll, dann musst Du es im Modul 'DieseArbeitsmappe' ins Workbook_SheetCalculate-Ereignis packen.
Und wenn das Makro dann nicht auf dem jeweils aktiven Tabellenblatt ablaufen soll, sondern immer auf dem gleichen, dann musst selbiges mit referenzieren; für Tabelle1 sähe das so aus:
Worksheets("Tabelle1").Range("T34:AB268").Select
Noch sauberer wäre das ganze, wenn Du die Selektiererei noch weglässt, das komplette Makro in 'Diese Arbeitsmappe' sähe dann so aus:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
MsgBox "Jetzt habe ich gerechnet"
Range("T34:AB268").Sort Key1:=Range("AB34"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = False
Calculate
Application.EnableEvents = True
End Sub

Schönen Gruß,
Andi
Anzeige
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 16:36:06
Michael
Hallo Andi,
hab das ganze jetzt in "Diese Arbeitsmappe" gepackt, so wie Du geschrieben hast. Jetzt habe ich aber wieder die Schleife, dass immer die MsgBox kommt.
Und der Sortierteil soll immer im selben Tabellenblatt ablaufen.
Danke+Gruß
Michael
AW: Makro an Standard-Neuberechnen (F9) anknüpfen
22.11.2006 16:54:19
Andi
Hi,
wenn immer auf dem gleichen Blatt sortiert werden soll, dann muss es natürlich so heißen (mit angepasstem Tabellen-Namen):

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
MsgBox "Jetzt habe ich gerechnet"
Worksheets("Tabelle1").Range("T34:AB268").Sort Key1:=Range("AB34"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = False
Calculate
Application.EnableEvents = True
End Sub

Dass die MsgBox immer wieder kommt, kann ich mir weder vorstellen, noch kann ich das bei mir reproduzieren; bist Du sicher, dass Du die beiden Application.EnableEvents-Zeilen drin hast?
Schönen Gruß,
Andi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige