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

Excel VBA

Excel VBA
13.05.2020 10:55:33
Andreas
Hallo,
Das habe eine Art Kalenderanwendung mit Excel erzeugt, so dass jeden Monat ein neues Sheet dazukommt.
Auf dem Start-Sheet habe ich eine Umschaltfläche (toggle button), d.h. ein Active-X control, das dann auf jeder Kopie auch wieder vorhanden ist.
Leider gehört der Code für button_click und button_mousedown direkt zum Sheet statt zum Modul.
Innerhalb eines Moduls kann ich eine (private) Sub von einer anderen aufrufen.
Das erste Problem war, dass der Toggle-Button bei jedem Klick seinen Zustand wechselt. Ich kann im Code von buttonName_click keine Prüfung machen, die dann entscheidet, ob der Button seinen Zustand tatsächlich ändert. Buttonname_click macht das bei einem toggle-button sofort.
Daher habe ich diese Prüfung in buttonname_Mousedown implementiert, buttonname_click leer gelassen und rufe von MouseDown abhängig vom Prüfungsergebnis buttonName_click auf oder eben nicht. Das hat dann nur noch die Funktion, den Zustand zu wechseln wenn es angesagt ist.
Abhängig von dem Ergebnis der Prüfung rufe ich dann u. U. MeineSub_ausblenden oder meineSub_einblenden auf.
Diesen Code habe ich in Modul1 kopiert und auf dem Sheet erstmal auskommentiert, damit er nicht bei jeder Kopie des Sheets mit kopiert wird. Solange der Code im Sheet nicht auskommentiert ist und ich die Subs dort nutze, funktioniert auch alles.)
Nun rufe ich MeineSub_ausblenden von ButtonName_Mousedown auf:
Application.run "modul1.MeineSub_ausblenden"
Leider muss ich darin aber auf eine Eigenschaft des Buttons zugreifen.
Wie geht das? Kann ich in Modul1.MeineSub_ausblenden wissen von welchem Sheet der Aufruf kommt und die Eigenschaft dessen toggle-Buttons setzen?
Normale Buttons gehen direkt auf Subs in Modul1.
Leider hat man den Wechsel im Aussehen (deutlich bei aktiviertem Button, dezent bei de-aktiviertem Button) in normalen Buttons nicht zur Verfügung.
Es stört mich, dass, so wie es momentan steht, die notwendigen Subs zum ToggleButton bei jeder Kopie des Sheets auch noch mal kopiert werden, da die Funktionalität immer gleich ist und es keinen Grund für diese Vervielfältigung von Code gibt.
Danke für Ideen wie ich das effizienter gestalten kann.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA
13.05.2020 11:00:02
Andreas
Excel VBA war ein schlechter Name. Leider sehe ich nicht, wie ich den im Nachhinein ändern kann.
Vervielfältigung von Code von Active-X-Toggle button vermeiden
oder ähnlich wäre besser gewesen.
Na hier in der Betreff Zeile...
13.05.2020 11:07:58
Helmut
Lösung: Klasse für den T-Button programmieren (oT)
13.05.2020 12:52:24
EtoPHG

AW: Excel VBA
13.05.2020 13:08:40
Daniel
Hi
verwende doch als Button ein Rechteck oder eine sonstige Grafikform.
diesen kann man genauso wie einem Formularfeld-Button ein Makro aus einem allgemeinen Modul zuweisen, welches dann bei Klick auf die Form ausgeführt wird.
Mit diesen hast du mehr grafische Möglichkeiten als bei den Buttons (wobei das 3d-Einsinken nicht funktioniert)
Dabei können auch mehrere Buttons das gleiche Makro verwenden.
Beim Kopierern des Buttons wird die Makroverknüpfung mit kopiert.
über Application.Caller kannst du herausfinden, welcher Button jetzt das Makro aufgerufen hat, um dann gezielt bei diesem Button die Farbe zu ändern.
allerdings gibt's hier nur das Click-Event, kein MouseDown oder ähnliches wie bei einem ActiveX-Element.
Gruß Daniel
Anzeige
AW: Excel VBA
14.05.2020 15:22:01
Andreas
Hi,
danke.
Hatte ich auch schon überlegt, zumal ich schon andere Buttons drin habe.
Aber es war mir klar, dass dann die Toggle-Funktionalität weg ist.
Deswegen hatte ich das erst gelassen.
Muss mal sehen, ob ich das noch in einen normalen Button ändere.
Danke für den Hinweis auf Application.caller.
Hatte bisher nur Application.run registriert.
Schönen Gruß
AW: Excel VBA
14.05.2020 15:22:03
Andreas
Hi,
danke.
Hatte ich auch schon überlegt, zumal ich schon andere Buttons drin habe.
Aber es war mir klar, dass dann die Toggle-Funktionalität weg ist.
Deswegen hatte ich das erst gelassen.
Muss mal sehen, ob ich das noch in einen normalen Button ändere.
Danke für den Hinweis auf Application.caller.
Hatte bisher nur Application.run registriert.
Schönen Gruß
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige