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

Tab-Buttons Aktionen für normale Standardmodule

Tab-Buttons Aktionen für normale Standardmodule
03.05.2018 13:34:20
Markus
Hallo Community
ich habe eine Frage die bestimmt trivial ist, aber ich komme gerade nicht auf die Lösung und zwar folgendes:
Man erstellt sich einen CommandButton (ActiveX-Steuerelement), diesem weist man eine Aktion zu. Soweit so gut, funktioniert auch immer, nur wird dieses CommandButton1_Click() immer in die Tabelle reingeschrieben bei den Microsoft Excel Objekten.
Mein Problem ist nun, ich möchte diese CommandButton_Click Aktion nicht von der Tabelle aus ausführen, sondern einem Modul aus, also der Code soll nicht in den Microsoft Excel Objekten stehen unter Tabelle1, sondern allgemein in einem Modul zum Beispiel Modul1.
Wenn ich den selben Code dann in das Modul1 schreibe, dann funktioniert aber die Funktion des Buttons nicht mehr, heißt beim Click auf den Button tut sich nichts. Mir ist zwar klar das der Button in der Tabelle1 angelegt wurde und für die Tabelle somit bestimmt ist, aber irgendwie muss es doch auch gehen von einem normalen Standardmodul darauf zuzugreifen und die selbe Aktion ausführen zu lassen wie wenn der Code bei den Microsoft Excel Objekten bei den Tabellen gelistet ist?
Hintergrund ist einfach das ich nach einem Export den Buttons andere Funktionen zuweisen möchte. Also nicht alle Module exportiere und im nachhinein noch mir andere Module importieren lassen möchte (was schon geht), die dann die neuen Aktionen der Buttons mit sich bringen. Nur wenn immer alles von den Tabellen aus geht, dann funktioniert das nicht, da diese ja immer komplett rüberkopiert spricht exportiert werden, daher müßte es von den Modulen aus funktionieren den Buttons die Aktionen abzuverlangen.
Hoffe das war einigermaßen verständlich erklärt und mir kann bitte jemand helfen und schreiben ob und wenn ja man von Standardmodulen auf die CommandX-Steuerelemente Buttons in einer Tabelle zugreift.
Wichtig ist dabei auch: Das die Buttons dann auch UserForms aufrufen sollen können von den Standardmodulen aus, also UserForm12.Show zum Beispiel und natürlich über das allgemeine "call", halt so wie es von den Tabellen aus schon geht aber nicht den Standardmodulen.
Ich habs schon versucht mit Tabellenamen und Makroname hintendran, ging aber nicht.
Also
Private Sub CommandButton1_Click()
call Tabelle1.Modul1.Aktion (wobei Aktion der Name der Prozedure ist)
oder: call Modul1.Aktion
Auch mit Public statt Private hat es nicht funktioniert.
Beste Grüße
Markus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tab-Buttons Aktionen für normale Standardmodule
03.05.2018 13:38:38
EtoPHG
Hallo Markus,
Für ActiveX Steuerelemente ist der Code an die Tabellenklasse gebunden, weil diese Event (Ereignis) gesteuert sind. Diese Ereignis Codes kannst du nicht in eine Modulklasse verlegen!
Für Formular Steuerelemente kannst du dein Ziel erreichen, nicht aber für ActiveX!
Gruess Hansueli
Tab-Buttons Aktionen für normale Standardmodule
03.05.2018 14:49:40
Markus
Danke für die Antwort.
Uhh das hört sich ja nicht gut an. Es gänge aber wenn man dem Formlarbutton dann ein Click_ereignis zuweisen kann noch. Weiß jemand ob das gänge, dann würde ich die paar Buttons die es betrifft auf Formularbuttons umstellen. Aber ihre Farbe sollen sie denoch ändern per Click.
Beste Grüße
Makrus
Anzeige
AW: Tab-Buttons Aktionen für normale Standardmodule
03.05.2018 15:15:40
Werner
Hallo Markus,
ruf doch mit deinem CommandButton-Klick das Makro in deinem Modul auf:
Private Sub CommandButton1_Click()
Call DeinMakroname
End Sub
Der Code für den CommanButton-Klick muss natürlich weiterhin in dem Tabellenblatt stehen, in dem sich auch der CommandButton befindet.
Gruß Werner
Tab-Buttons Aktionen für normale Standardmodule
03.05.2018 16:11:28
Markus
Ja soweit geht's ja auch schon Herr Werner, nur nach dem Export kann ich dann dem Button aber automatisch keine neue Prozedure zuweisen, da ja hier auch immer noch alles in der Objekttabelle steht vom Code her gesehen.
Ich weiß nicht ob es mit den Klassenmodulen gänge, also wenn man von dort die Buttons in der Tabelle1 aus anspricht? Bisher habe ich mit Klassenmodulen noch nichts zu tun gehabt, das wäre aber auch vielleicht noch eine Möglichkeit.
Eine andere wäre das On_click Ereignis vom Blatt "DieseArbeitsmappe" aufzurufen und die Prozedure dort hineinzuschreiben, habe ich auch schon versucht, aber der Button hat dann wieder keine Funktion zu verzeichnen. Es scheint also das auch dort das Click_Ereignis vom Button übergangen wird. Nur wenn es direkt in der Objekttabelle Tabelle steht, dann geht's, aber in dem Fall jetzt nützt mir das nichts.
Formularbuttons sind da geeignet, nur wie weise ich denen ein On_Click Ereignis zu? Da kann ich ja nur ein Makro zuweisen, aber keine Change_Ereignisse oder?
Jemand eine Idee oder kann mir sagen wie man das dann für die Formular-Buttons macht?
Beste Grüße
Markus
Anzeige
AW: Tab-Buttons Aktionen für normale Standardmodule
04.05.2018 10:57:37
EtoPHG
Hallo Markus,
Ich glaube du verfolgst hier einen viel zu komplizierten Ansatz. Soweit ich dich verstehe:
1. Du hast eine Arbeitsmappe A mit einer Tabelle auf der sich ein ActiveX-Button befindet.
2. Beim Click auf den Button soll ein bestimmter Code in der Arbeitsmappe A ausgeführt werden.
3. Du sicherst die Arbeitsmappe A als Arbeitsmappe B (dem sagst du Export?)
4. Beim Click auf den Button soll nun eine anderer Code in der Arbeitsmappe B ausgeführt werden.
Lösungsansatz:
Sämtlicher Code (inkl. Userform für B) sowohl für A und B muss in Arbeitsmappe A abgespeichert werden. Die Mappen A und B werden durch ihren Namen oder Speicherort unterschieden, diese Unterscheidung ist auch im Code festgehalten und aufgrund dieser wird entschieden (IF THEN ELSE) ob der Code für A oder B ausgeführt werden.
Somit ist weder ein 'komischer' Export von A nach B, noch ein zusätzlicher 'Import' von Code in B notwendig. Ob der Code nun in einem Modul oder im Tabellenblatt ausgeführt wird ist ebenfalls nebensächlich und 'kompliziertere' Klassenprogrammierung wird ebenfalls hinfällig.
Gruess Hansueli
Anzeige
Tab-Buttons Aktionen für normale Standardmodule
03.05.2018 16:01:09
Markus
Danke für die Antwort.
Uhh das hört sich ja nicht gut an. Es gänge aber wenn man dem Formlarbutton dann ein Click_ereignis zuweisen kann noch. Weiß jemand ob das gänge, dann würde ich die paar Buttons die es betrifft auf Formularbuttons umstellen. Aber ihre Farbe sollen sie denoch ändern per Click.
Beste Grüße
Makrus
AW: Tab-Buttons Aktionen für normale Standardmod
04.05.2018 13:36:59
Daniel
Hi
nein, Formularbuttons haben kein Klick-Ereignis.
Formularsteuerelementbuttons haben auch keine Farbe, die man ändern könnte.
du hast im Prinzip für das was du vorhast 2 Möglichkeiten:
a) du bleibst bei den ActiveX-Steuerelementbuttons
dann kommt der eigentlich Code in ein Makro in ein allgemeines Modul.
Im Click-Event des Buttons führst du dann die gewünschten Änderungen am geklickten Button durch und rufst das Makro aus dem allgemeinen Modul auf:
Private Sub Commandbutton1_Click()
Commandbutton1.Backcolor = vbRed
Call Makro1
End Sub
b) du verwendest normale Garfikelemente als Buttons.
diese Funktionieren genauso wie Formularsteuterelementbuttons, können aber umgefärbt werden.
der Code steht vollständig in einem Makro in einem allgemeinen Modul, welches du dem Element zuweist.
das Umfärben des Buttons musst du dann in dieses Makro integrieren.
Über Application.Caller kannst du dann ermitteln, welcher Button das Makro aufgerufen hat, bzw ob es normal gestartet wurde, und dann diesen Button umfärben.
dein zugewiesenes Marko fängt dann so an, es prüft zuerst, ob der Code von einem Button aufgerufen wurde und wenn ja, (buttonname steht im Application.Caller) wird dieser Button umgefärbt.
Sub test()
If VarType(Application.Caller) = vbString Then
ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB = vbRed
End If
Hier dein weiterer Code
End Sub
gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige