Anzeige
Archiv - Navigation
148to152
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
148to152
148to152
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Optionbuttons mit Zeilen verknüpfen

Optionbuttons mit Zeilen verknüpfen
21.08.2002 14:25:24
Mattis
Hallo,

bin VBA-Anfänger und komm bei folgendem nicht weiter. Vielleicht kann mir jemand helfen?
In meiner Tabelle soll die Spalte A in jeder Zelle einen Optionbutton enthalten. Der Name des Optionbuttons soll immer mit der jeweiligen Reihe übereinstimmen ( für „A7“ z.B. OptionButton7 ). Wenn ich einen Button anwählen, dann soll die jeweilige Reihe markiert und etwas eingefügt werden.
Ich hab schon rumprobiert (unten ist das, was ich bis jetzt zustande gebracht habe...), jetzt häng ich aber fest, weil ich nicht weiß, wie ich vom Optionbutton die angehängte Zahl auslesen kann, damit ich darüber die Zeile definieren kann.

------------
Dim Zeile As Integer
Dim Button As Object

Zeile = ActiveCell.Row
Button = "OptionButton" & Zeile
------------
Hoffe ich konnte mein Problem verständlich schildern und jemand hat eine Idee,

Mattis

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

Betreff
Datum
Anwender
Anzeige
Re: Optionbuttons mit Zeilen verknüpfen
21.08.2002 14:44:07
Mattis
werde mal was mit "linkedCell" probieren, und dem Wert True / False, der dadurch reingeschrieben wird....
Lösung /mt
21.08.2002 14:50:18
Axel
Hallo,

die Steuerelemente können über die Shapes-Auflistung angesprochen werden.

Beim manuellen Anlegen werden die Optionsfelder einfach durchnumeriert, und haben keinen Bezug zur darunterliegenden Zelle.


Außerdem gilt es zu unterscheiden, ob die Optionsfelder über die SteuerelementeToolbox (sind dann mit OptionButtonXX bezeichnet) oder über die Symbolleiste Formular (sind dann mit OptionsfeldXX bezeichnet) angelegt wurden.

Über folgendes Makro werden z.B. alle Optionsfelder die mit der SteuerelementeToolbox angelegt wurden, mit der Zeilennummer der Zelle belegt, die die obere linke Ecke des Optionsfeldes bestimmt.

Dieses Makro ist quick an dirty - es gibt keine Prüfung, ob nicht ggf. zwei Optionsfelder in der gleichen Zeile plaziert sind.

Gruß
Axel

Anzeige
Re: Lösung /mt super ! Aber...
21.08.2002 15:10:15
Mattis
Hi Axel,
deine Lösung hat mir schon richtig gut geholfen - v.a. das mit dem ".name,12 = ...." ist super, hab ich vorher nicht gewußt, dass man sowas machen kann. Danke schon mal.

Was ich aber jetzt noch wissen müsste, ist, wie man die Zahl, die hinten an OptionButton gehängt ist, als Variable verwendet!?!
Damit ich diese Variable (die dann ja die Zeilen-Nummer ist) für Formeln und zum einfügen von Sachen verwenden kann.

Kannst du mir da einen Tipp geben und helfen? Danke für deine Mühen,

Mattis

Re: Lösung /mt super ! Aber...
21.08.2002 15:32:39
Axel
Hallo Mattis,

du kannst natürlich die lfd. Nummer aus der Bezeichnung des Button mit der Right()-Funktion extrahieren. Ggf. aufpassen, da die Nummern ein- oder zweistellig sind.

Aber hilft Dir das weiter ?

Warum verwendest Du für Deine Aufgabenstellung denn überhaupt Optionsfelder?. Du willst die Reihe markieren und etwas einfügen. Was soll geschehen, wenn das Optionsfeld deaktiviert wird? Und dann wieder aktiviert?

Ist da nicht ein CommandButton sinnvoller? Die Vorgehensweise zur Benennung des Button ist natürlich identisch.

Du kannst aber auch direkt die OnAction-Eigenschaft des Tabellenblattes verwenden. Dann wird bei einem Doppelklick auf eine Zelle ein Makro gestartet.

In diesem Makro kann dann durch ActiveCell.Row problemlos die aktuelle Zeile ermittelt werden.

Gruß
Axel

Anzeige
Re: Lösung /mt super ! Aber...
21.08.2002 16:02:47
Mattis
Hallo Axel,

Danke für Antwort, hilft mir wieder etwas weiter!

(quote: du kannst natürlich die lfd. Nummer aus der Bezeichnung des Button mit der Right()-Funktion extrahieren. Ggf. aufpassen, da die Nummern ein- oder zweistellig sind.)
Wie kann ich aufpassen bzw. unterscheiden, ob die Zahl ein- oder zwei- oder drei-stellig ist?Ich will nur die Zahl rausbekommen und keine Stücke vom Wort "optionsfeld".


(quote: Warum verwendest Du für Deine Aufgabenstellung denn überhaupt Optionsfelder?. Du willst die Reihe markieren und etwas einfügen. Was soll geschehen, wenn das Optionsfeld deaktiviert wird? Und dann wieder aktiviert?)
Weil immer nur ein Optionbutton aktiviert sein kann und ich es so machen möchte, dass der User immer nur auf die mit dem Optionbutton markierte Zeile zugreifen und bearbeiten kann, die anderen Zeilen sollen dann schreibgeschützt sein.

Wie kann ich die LinkedCell für alle Buttons auf "A" & Zeile, die mit TopLeftCell rauskommt, setzen? Hab deinen Code abgeändert, ging aber nicht. Ich hatte nach dem THEN folgendes: .linkedCell = "A" & TopLeftCell.Row - das ist irgendwie falsch.

Kannst du mir wieder helfen?

danke,

Mattis



Anzeige
Re: Lösung /mt super ! Aber...
21.08.2002 16:34:26
Axel
Zu 1)

Angenommen die Bezeichnung des Optionsfeldes beginnt immer mit "OptionsFeld", dann bekommst Du die lfd. Nummer mit

Right(s, Len(s) - 11)

heraus. s bezeichnet hier den Namen des Optionsfeldes.


zu 2)

die LinkedCell kann wie folgt gesetzt werden, wobei ich jetzt davon ausgehe, daß die Optionsfelder bereits alle korrekt bezeichnet sind:

Gruß
Axel


Super - Danke!!
21.08.2002 17:04:40
Mattis
HAllo Axel,

vielen Dank für deine Hilfe(n)! denke ich komme jetzt klar. habe durch dich ne Menge gelernt. Ich sag nur: Left, Right, Mid-Befehl und die Sache mit DrawingObject.LinkedCell, TopLeftCell usw. ...

Super, danke nochmal,

MAttis

Anzeige

24 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige