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

Prüfen ob Button in Zellbereich gedrückt

Prüfen ob Button in Zellbereich gedrückt
10.11.2022 11:58:37
Thomas
Hallo, stehe vor folgendem Problem:
Ich erzeuge in einer Schleife dynamisch Buttons, die in Zellen einer festgelegten Spalte eingebettet sind. Dabei werden die Buttons "Archivierbutton1","Archivierbutton2"...benannt. Sobald ein Button gedrückt wird soll eine Aktion mit den Werten durchgeführt werden, die sich in der Zeile des Buttons befinden.
Meine Idee war es jetzt mit der Worksheet_Change(ByVal Target As Range)- Funktion festzustellen, wenn ein Button gedrückt wurde. Sobald dies geschieht, soll mit mit target.row festgestellt werden, in welcher Zeile sich der Button befindet und die entsprechende Aktion für die Werte in der Zeile durchgeführt werden. Das Problem dabei ist: Worksheet_change wird durch das Betätigen eines leeren Buttons scheinbar nicht getriggert.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob Button in Zellbereich gedrückt
10.11.2022 12:01:52
Beverly
Hi,
weshalb weist du den Button keinen Code zu, der dann feststellt, welcher Button gedrückt wurde?
Bis später
Karin

Klassenprogrammierung ActiveX-Button
10.11.2022 14:58:48
Beverly
Hi,
bei ActiveX-Steuerelementen geht das nur mittels Klassenprogrammierung.
Im Anhang findest du ein Beispiel, wie beim Öffnen der Arbeitsmapppe mehrere CommandButton erstellt werden, die beim Drücken die Zelladresse ausgeben, auf der ihre linke obere Ecke liegt.
https://www.herber.de/bbs/user/156124.xlsm
Bis später
Karin

Anzeige
AW: Prüfen ob Button in Zellbereich gedrückt
10.11.2022 12:29:12
GerdL
Hallo Thomas,
welche Sorte Buttons erzeugst du wie?
Gruß Gerd
AW: Prüfen ob Button in Zellbereich gedrückt
10.11.2022 12:46:08
Thomas
Ich füge die Buttons über ActiveSheet.OLEObjects.Add(classtype:="Forms.CommandButton.1") hinzu. Ich glaube das sind dann aktive-x Steuerelemente.
AW: Prüfen ob Button in Zellbereich gedrückt
10.11.2022 12:33:36
Daniel
Hi
kommt darauf an, was für Buttons du hast.
bei ActiveX-Buttons müsstest du zusätzlich für jeden Button sein eigenes Click-Event-Makro erstellen (was per VBA aufwendig ist), oder mit Klassenprogrammierung arbeiten (was professionell ist, aber entsprechendes wissen voraussetzt)
die Light-Lösung wäre, dass du statt der ActiveX- dann Formularfeld-Buttons verwendest. Diesen kannst du dann über den Befehl .OnAction "Makroname" ein vorhandenes Makro aus einem allgemeinen Modul zuweisen, welches dann bei Klick auf den Button ausgeführt wird.
in diesem Makro kannst du dann mit Application.Caller den Shapenamen des geklickten Buttons ermitteln und damit weiterarbeiten.
ActiveSheet.Shapes(Application.Caller) ist dann das eigentliche auslösende Objekt.
am einfachsten ist wahrscheinlich. dass du gar nicht mit Buttons oder so arbeitest, sondern nur die betroffenen Zellen so formatierst dass sie wie Buttons aussehen und den Anwender informierst, dass er zum Auslösen einen Doppelklick auf die entsprechende Zelle machen soll.
Dann verwendest du das BeforeDoubleClick-Event des Tabellenblatts und hast in diesem mit TARGET die Zelle, die geklickt wurde.
Gruß Daniel
Anzeige
AW: Prüfen ob Button in Zellbereich gedrückt
10.11.2022 15:33:14
Thomas
Mit dem Application caller in Kombination mit Formularfeldelementen habe ich es jetzt hinbekommen. Leider hat das ganze einen kleinen Schönheitsfehler. Die Formularfelder bekomme ich nicht, wie aktive-x Steuerelemente formatiert. Bei commandbuttons gab es die Attribute "Caption" und "Backgroundcolor", die bei den Formularfeldern zu fehlen scheinen.
AW: Prüfen ob Button in Zellbereich gedrückt
10.11.2022 16:15:58
Daniel
Im prinzip richtig.
Du hast aber nicht nur die Formularfeldbuttons, sondern du kannst jedes beliebige Grafikelement verwenden und ihm ein Makro zuweisen, das bei Klick dann ausgeführt wird. Damit erweiterst du dann deine grafischen Möglichkeiten, denn du hast dann nicht nur Hintergrundfarbe, sondern auch Rahmenvarianten und kannst sogar verschiedene Formen wählen.
Den einzigen grafischen Vorteil, den die ActiveX-Buttons haben ist der 3-D-Effekt beim Draufklicken, dh dieses sichtbare "runterdrücken" solange man den Button gedrückt hält.
Weiterer Nachteil der Grafikbuttons gegenüber ActiveX-Buttons ist, dass du bei den Grafikbuttons nur das Klick-Event zur Verfügung hast, während ActiveX noch weitere Events bietet (MouseUp, MouseDown, MouseMove).
Nachteil der der ActiveX-Buttons ist, vorallem wenn sie maschinell erstellt werden, jeder Button seine eigenen Makros benötigt oder man eben echte Klassenprogrammierung beherrschen muss (das Zusweisen eines normalen Makros an die Formular- oder Grafikbuttons ist quasi Klassenprogrammierung light für Dummies)
und wie gesagt, wenn man die Buttons festen Zellen zuordnen will, ist häufig der Weg über den Doppelklick auf die Zelle der einfachste.
Gruß Daniel
Anzeige
AW: Prüfen ob Button in Zellbereich gedrückt
10.11.2022 16:56:24
Beverly
Meinen Beitrag zu ActiveX-Button von 14:58:48 hast du gelesen?
Bis später
Karin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige