Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen

GlobalerOptionButton_Click Handler


Betrifft: GlobalerOptionButton_Click Handler von: Frank
Geschrieben am: 17.10.2016 23:30:12

Hallo zusammen,

habe ca. 500 OptionButtons (ActiveX) in einem Sheet und möchte abfangen wenn irgendeiner dieser OptionButtons geklickt wird, da ich nicht über 500 Click Events schreiben will. (Wer sich fragt warum keine Formular OptionButtons: Hatte riesigen Ärger mit Ihnen da diese - warum auch immer - ihre Zellverknüpfung beim ausblenden von Zeilen, in denen Sie positioniert waren, verändert wurden).

Folgender Code funktioniert für einen Button schon. Ich habe jeweils 8 Buttons mit eigenem GroupName. (Also 480 Buttons und 60 Gruppen)

Private Sub OptionButton1_Click()

Dim obNameVal As Integer
Dim obNameLen As Integer
Dim obRow As Integer
Dim obRange As String
Dim obFrmVal As Integer
Dim obValue As Integer
    
    obNameLen = Len(OptionButton1.Name)
    obNameVal = Right(OptionButton1.Name, obNameLen - 12)
    obRow = Range(OptionButton1.TopLeftCell.Address).Row
    obRange = "Q" & obRow
    obFrmVal = OptionButton1.GroupName
    obValue = obNameVal - ((obFrmVal - 1) * 8)
    
ActiveSheet.Range(obRange).Value = obValue
End Sub
Also ich bräuchte ein Event/Makro/etc dass den geklickten Button erkennt und dann oben variabel den OptionButton1.Name ersetzt und ähnlich wie das Worksheet_Calculate Eevent beim Click sofort ausführt. Hatte schon lange im Netz gesucht allerdings nur etwas mit neuem Klassenmodul gesehen was ich entweder nicht verstehe oder bei mir nicht funktioniert.

Wer hat eine kreative Idee? Besten Dank im Voraus und Grüße
Frank

  

Betrifft: AW: GlobalerOptionButton_Click Handler von: Mullit
Geschrieben am: 18.10.2016 06:42:41

Hallo,

ich hab Dir mal ein Beispiel gemacht:

https://www.herber.de/bbs/user/108839.xlsm

Gruß, Mullit


  

Betrifft: AW: GlobalerOptionButton_Click Handler von: Frank
Geschrieben am: 18.10.2016 16:11:45

Perfekt! 1000 Dank Mullit


  

Betrifft: AW: GlobalerOptionButton_Click Handler von: Daniel
Geschrieben am: 18.10.2016 16:21:35

Wobei sich die Frage stellt, ob man dann nicht besser anstelle jeder Optionbuttongruppe eine List- oder Combobox erstellt und für diese eine Ausgabezelle definiert.

dann hat man nicht 480 sondern nur 60 Steuerelemente auf dem Blatt und das ganze funktioniert Codefrei.

Gruß Daniel


  

Betrifft: AW: GlobalerOptionButton_Click Handler von: Frank
Geschrieben am: 18.10.2016 18:21:31

Hallo Daniel,

ja wäre auch möglich, aber benötige die Option Buttons aus Design- und Anwendergründen.

Trotzdem Danke für die zusätzlichen Gedanken/Mühen

Gruß Frank


  

Betrifft: AW: OptionButton Zellverknüpfungsfehler von: Frank
Geschrieben am: 19.10.2016 01:39:43

Hallo Zusammen,

trotz der grundsätzlich erfolgreichen Lösung über ActiveX Elemente und Mullits Lösung muss ich doch noch mal ne andere Frage stellen, da durch die vielen ActiveX Buttons das File doch sehr träge wurde.

Ich habe eine Datei angehängt (https://www.herber.de/bbs/user/108864.xlsm) bei der ich beim besten Willen nicht verstehe wo der Fehler liegt.
Wenn man zunächst ohne das Makro in Tabelle1 auf Tabelle2 die OptionButtons klickt werden wie gewünscht die entsprechenden Zellverknüpfungen befüllt. Nachdem das Makro durchgelaufen ist, das lediglich die Buttons und einige Zeilen aus- und wieder einblendet, sind die Zellverknüpfungen hinüber.

An der Gruppierung der 4 OptionButtons liegt es nicht. Auch bei Einzelgruppierung der Buttons gehen die richtigen Zellverknüpfungen verloren und es entsteht irgendwie eine Art Gruppenfeld aus allen 4 OptionButtons.

Ich verzweifle bald, da die Lösung mit den Formularsteuerelementen deutlich schneller läuft.

Nochmals danke im Voraus für Ideen/Lösungen
Gruß Frank


  

Betrifft: AW: OptionButton Zellverknüpfungsfehler von: Mullit
Geschrieben am: 19.10.2016 09:31:14

Hallo,

u.U. müsstest Du da per Code mit den Befehlen .Ungroup / .Group neu gruppieren, oder Du läßt die Gesamtgruppierung weg und gruppierst nur die einzelnen Grupppenreihen der OptButtons, allerdings besticht dann auch Daniels Argument, sich um Code keine Gedanken mehr zu machen und Listboxen zu verwenden...

Gruß, Mullit


  

Betrifft: AW: OptionButton Zellverknüpfungsfehler von: Mullit
Geschrieben am: 19.10.2016 12:49:03

Hallo,

hab Dir mal noch ein Bsp. in ZeilenAusblendenEinblenden2 angehängt...

https://www.herber.de/bbs/user/108873.xlsm

Gruß, Mullit


  

Betrifft: AW: OptionButton Zellverknüpfungsfehler von: Frank
Geschrieben am: 19.10.2016 14:40:28

Hallo und schonmal danke,

wie gesagt die OptionButtons brauche ich.

Deine Beispieldatei löst aber das Problem auch nicht, da die Zellverknüpfung - wie ichs ja vorher auch beschrieben habe - auch bei einzelner Grupperiung verloren geht.

Meine Frage wäre erstmal warum Excel sich so verhält und ob es ein Programmfehler ist oder einfach irgendetwas nicht bedacht wird. Warum geht durch Ein- und Ausblenden die Zellverknüpfung kaputt? Jetzt sind es ja auch nur 4 Buttons statt 500. Kann ja demnach auch nicht an der Menge der Buttons liegen.

Vor allem nach dem Makro kann die Zellverknüpfung auch nicht mehr richtig hergestellt werden, da er danach alle 4 Buttons als eine Gruppe bzw. ein Gruppenfeld behandelt.

Was in deiner Datei - also bei Einzelgruppierung - funktioniert ist die Eigenschaft von Zellposition und Größe unabhängig. Bei meiner Datei funktioniert dieses Vorgehen allerdings nicht. Genausowenig funktioniert in deiner Datei nur zu sagen von Von Zellposition abhängig. Dies Eigenschaft müssen meine Buttons allerdings aufgrund der Zeilen Ein- und Ausblenderei haben.

Lange Rede gar kein Sinn, verstehe nicht warum die Zellverknüpfung sowie die Feldgruppierungen überhaupt etwas mit den Zellposiitonen und Größen zu tun haben?

Danke im Voraus
Gruß Frank


  

Betrifft: AW: OptionButton Zellverknüpfungsfehler von: Mullit
Geschrieben am: 19.10.2016 17:18:00

Hallo,

ah ja, tatsächlich in xl2007 gehts, in xl2010 nicht, dann mußt Du wie schon geschrieben per Code ungruppieren bzw. gruppieren und die Verknüpfungen neu setzen, wenn Du nicht klar kommst, könnt ich Dir später noch 'n Ansatz proggen..

Gruß, Mullit


  

Betrifft: AW: OptionButton Zellverknüpfungsfehler von: Frank
Geschrieben am: 19.10.2016 19:30:59

Hallo und nochmals danke,

denke das sinnvollste wäre die Zellverknüpfungen (die offensichtlich in 2010 spinnen) ganz wegzulassen und den OBs gar keine Verknüpfung zu geben. Stattdessen wäre doch der Globale Option Button Handler wieder nützlich der einfach nur abfängt welcher Button gedrückt wurde und dann in die (ursprüngliche) Zellverknüpfungszelle den Wert schreibt. Ich werde versuchen das mal zu adaptieren.

Ein Problem hätte ich dann allerdings noch. Ich weiss nicht wie ich in einer Grupper aus Optionbuttons (inklusive seinem Gruppenfeld) das Gruppenfeld bzw. alle Gruppenfelder in einem Sheet, die sich jeweils wieder in der jeweiligen Einzelgruppe befinden ausblenden kann. Diese werden ja vorher über das Ein und Ausblenden der gruppierten Buttons leider wieder mit sichtbar gemacht.

Danke im Voraus
Grüße Frank


  

Betrifft: AW: OptionButton Zellverknüpfungsfehler von: Frank
Geschrieben am: 20.10.2016 00:03:40

Hallo,

ok bekomme den Transfer (soweit mit Formularsteuerelementen überhaupt möglich) mit dem Option Button Handler nicht hin. Kenne mich leider zu schlecht aus (VBA bescheiden).

Habe deine Datei auf die Formularsteuerelemente angepasst und beigefügt. (https://www.herber.de/bbs/user/108902.xlsm)

Wäre nett wenn du nochmal drüberschauen könntest. Das mit den Gruppenfeldern ausblenden hat sich erledigt. Habe sie einfach aus den einzelnen Gruppierungen genommen.

Grüße und danke im Voraus
Frank


  

Betrifft: AW: OptionButton Zellverknüpfungsfehler von: Mullit
Geschrieben am: 21.10.2016 00:36:49

Hallo,

ah ok, bei Formularelementen benötigen wir keinen Handler auf Klassenbasis mehr, da gehts einfach mit der Application.Caller - Eigenschaft, hab den Code nur den Buttons in der roten Tabelle zugewiesen, dafür brauchst Du nur Deine Gruppierungen aufheben und die Prozedur allen Buttons zuweisen, könnte man im Notfall auch noch coden....

Habs jetzt in xl2007 gemacht, wenns in Deiner Version Probleme gibt, müssten wir nochmal schauen...

https://www.herber.de/bbs/user/108937.xlsm

Gruß, Mullit


  

Betrifft: AW: OptionButton Zellverknüpfungsfehler von: Mullit
Geschrieben am: 21.10.2016 00:52:17

Hallo,

ach ja übrigens , wenn Du einfach nur die Nummern hochgezählt haben willst, benötigst Du eigentlich auch gar keinen Code mehr und könntest einfach die Zellverknüpfung mit den Gruppierungen verwenden...

Gruß, Mullit