Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
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

Activate manuell auslösen?

Activate manuell auslösen?
dave
Hallo zusammen,
ich hoffe, ich blamier mich jetzt nicht, aber folgende kurze Frage:
Wenn ich in einem Blatt bin, für das es ein Ereignis-Makro "Worksheet_Activate" gibt, wie löse ich das für das aktuelle Blatt manuell aus, ohne erst auf ein anderes wechseln zu müssen?
Gruß
David

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Worksheet_Activate
16.02.2012 08:22:39
Matthias
Hallo
Beispiel Code in Tabelle1 (dem aktiven Blatt)
Option Explicit
Private Sub Worksheet_Activate()
MsgBox "Hallo"
End Sub
Sub ml()
Worksheet_Activate
End Sub
Gruß Matthias
AW: Worksheet_Activate
16.02.2012 08:32:17
dave
Oh, oh, kann ich meine Frage zurückziehen? ;-)
(Ist ja wirklich peinlich.)
Danke und Gruß
David
doch nicht so einfach?
16.02.2012 08:46:08
dave
Leider muss ich doch nochmal darauf zurückkommen, denn so wie gedacht, funzt das net.
Ich habe eine Tabelle mit mehreren Blättern, in denen jeweils ein Worksheet_Activate existiert. Dieses nimmt jeweils eine bestimmte Zelle und stellt den Zoom in Abhängigkeit von dieser Zelle ein, deswegen auch bei jedem Blatt eine andere Zelle.
Nun hab ich eine Userform, bei der bei einem Klick auf eine Schaltfläche einige Bildschirm-Elemente ausgeschaltet werden, Fullscreen-Modus ein etc., so dass anschließend mehr Platz auf dem Bildschirm ist. Dabei sollte anschließend das Activate-Makro ausgeführt werden, damit der Zoom wieder angepasst wird.
Die Userform ist "vbmodeless" und der Klick kann bei deshalb bei jedem beliebigen Blatt kommen.
Wenn ich nun in die Sub für den "Klick" ein Worksheet_Activate einbaue, kommt eine Fehlermeldung, "Sub nicht definiert". Auch ein vorangestelltes "Call" hilft nicht.
Vorschläge, wie ich das lösen kann?
Gruß
David
Anzeige
AW: doch nicht so einfach?
16.02.2012 09:13:00
Rudi
Hallo,
nimm das Private raus.
Sub xxxx()
Tabelle1.Worksheet_Activate
End Sub
Sub Worksheet_Activate()
MsgBox "Hallo"
End Sub
Alternativ kannst du auch alles in eine eigene Sub auslagern und diese wechselweise aus Worksheet_Activate oder aus der UF heraus aufrufen.
Gruß
Rudi
AW: doch nicht so einfach?
16.02.2012 09:38:06
bst
Auch Hallo,
oder nimm:
Application.Run "Tabelle1.Worksheet_Activate"
das 'interessiert sich' (M.E. leider) nicht für Private/Public.
cu, Bernd
AW: doch nicht so einfach?
16.02.2012 09:41:01
dave
Das Problem ist ja, das die Tabelle jedesmal eine andere sein kann, je nachdem in welcher ich mich befinde, wenn ich den Button auf der UF auslöse - und daher kann ich diese nicht direkt adressieren!
Und ein einfaches Activesheet.Activate funzt auch nicht.
Gruß
David
Anzeige
AW: doch nicht so einfach?
16.02.2012 09:59:50
bst
Hi,
dann vielleicht:
Application.Run ActiveSheet.CodeName & ".Worksheet_Activate"
cu, Bernd
Im Prinzip IST es ganz einfach, ...
16.02.2012 11:53:40
Luc:-?
…David,
Das, was dir zuerst vorgeschlagen wurde, schreibst du (natürl ohne irgendein Private) in das gleiche DokKlassenModul, in dem auch die EventProc steht. Diese Proz rufst du dann v.d.UForm aus auf. Dabei können die Prozz nach ihrem Standort im UF-Pgm selektiert wdn.
Besser wäre es natürl, du könntest nur eine EventProc (näml Workbook_SheetActivate verwenden, die hat schon einen Parameter Sh, den du von der UF aus auch dem Aufruf-Pgm im gleichen Modul (analog oben) übergeben könntest. Das reicht den dann an die EventProc weiter. Habe ich zwar noch nie probiert (die andere Variante aber schon!), sollte aber fktionieren!
Gruß Luc :-?
Anzeige
AW: Im Prinzip IST es ganz einfach, ...
16.02.2012 13:47:53
dave
Sorry, da kann ich leider nicht folgen.
Die UF steht doch gar nicht in einem Modul?!
Ich habe einmal die einzelnen Blätter, in deren Code die "Worksheet_Activate"-Prozedur steht. Dann habe ich die UF, in der der Code für die Schaltfläche steht. Und drittens habe ich Module, in denen auch noch einige Sachen stehen, die aber mit dem hier beschriebenen Problem nichts zu tun haben.
Was soll jetzt wo stehen?
Ich muss das auch einigermaßen einfach halten, denn meine bescheidenen VBA-Kenntnisse sind noch die besten hier und irgendwann muss das vielleicht auch mal jemand anders verstehen.
Im Endeffekt geht es mir darum, dass bei Aktivierung von Fullscreen und Deaktiverung diverser "Drumherum"-Elemente mehr Platz vorhanden ist, der sich in einem höherem Zoom-Faktor niederschlagen soll. Bei Aktivierng des nächsten Blattes kommt ja auch wieder das Worksheet-Activate zum Zuge, aber das Blatt, was zum Zeitpunkt der Auslösung aktuell bleibt, bleibt halt auf dem Zoomfaktor stehen.
Ich habe mich jetzt erst mal damit beholfen, dass ich einfach den bestehenden Zoom-Faktor um 10 erhöhe, dass passt einigermaßen und ist hinsichltlich der Komplexität noch gut zu verstehen.
Wenn es keine einfache Lösung für die Aktivierung des Worksheet-Activate-Ereignisses gibt, werde ich das wohl dabei belassen.
Gruß
David
Anzeige
Du hast außerdem noch das Modul der Mappe, ...
16.02.2012 14:41:52
Luc:-?
…David,
in der, idR DieseArbeitsmappe genannt, kannst du die von mir genannte Ereignisprozedur einrichten, die dann für alle Blätter gilt. Man muss also in ihr die genannte ObjektVariable abfragen. Schau mal in die VBE-Hilfe, Stichwort: Ereignisse der Arbeitsmappe!
Gruß Luc :-?
AW: doch nicht so einfach?
16.02.2012 13:52:16
dave
Hi Bernd,
das funzt und ist auch für mich gut nachvollziehbar.
Danke (auch den anderen).
Gruß
David

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige