Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Optionsfeld (Formularsteuerelement) abfragen

Forumthread: Optionsfeld (Formularsteuerelement) abfragen

Optionsfeld (Formularsteuerelement) abfragen
29.08.2014 15:40:28
Barbara

Hallo
Ich habe mehrere Optionsfelder (Formularsteuerelemente, nicht ActiveX-Steuerelemente!) in einer Gruppe zusammengefasst.
Jedes dieser Steuerelemente soll das selbe Makro ausführen. Jetzt habe ich für jedes ein eigenes Makro mit jeweils den selben Inhalt.

Sub Optionsfeld467_Klicken()
MsgBox Worksheets(2).Range("C78")
End Sub
Sub Optionsfeld473_Klicken()
MsgBox Worksheets(2).Range("C78")
End Sub
Sub Optionsfeld475_Klicken()
MsgBox Worksheets(2).Range("C78")
End Sub

Frage 1:
Kann man das irgend wie vereinfachen? Vielleicht, dass man das Feld, das angeklickt wurde, abfragen kann. Oder irgend wie anders
Frage 2:
Im Beispiel oben ist "C78" die zellverknüpfte Zelle. Kann man die vba-mäßig auch irgend wie auslesen? Kann ja sein, dass sie sich zwischenzeitlcih ändert und dann wäre das Makro sinnlos.
LG,
Barbara
Kann man die zellverknüpfte

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Optionsfeld (Formularsteuerelement) abfragen
29.08.2014 16:27:43
Daniel
Hi
schreibe folgendes Makro in ein allgemeines Modul
Sub VerlinkteZelleAnzeigen()
MsgBox Range(ActiveSheet.Shapes(Application.Caller).ControlFormat.LinkedCell).Value
End Sub
du kannst dieses Makro allen betroffenen FormularSteuerelementen zuweisen.
den Formularsteuerelementen kannst du jedes direkt ausführbare Makro (das sind die, die du über das Menü in der Liste starten kannst) zuweisen.
Dabei kannst du das selbe Makro für mehrere Steuerelmente verwenden (dh ein Makro für alle).
Du kannst auch beim Zuweisen mehrere Steuerelemente gleichzeitig selektieren und dann diesesen das Makro in einem Schritt gleichzeitig zuweisen.
im Makro selbst ermittelt "Application.Caller", welches Steuerelement den Code ausgelöst hat und das "ControlFormat.LinkedCell" zeigt die Adresse der verknüpften Zelle an.
gruß Daniel

Anzeige
AW: Optionsfeld (Formularsteuerelement) abfragen
30.08.2014 02:02:10
Barbara
Hallo
die Vorschläge von Daniel und Franz waren sehr hilfreich, und ich konnte sie gut anwenden.
Hier nein Code (falls es wen interessiert), bezogen auf die Mappe, die ich zu Beginn hier reingestellt habe:
Sub AnteilAB()
Dim NameA As String, NameB As String
Dim WertA As Range, WertB As Range
' Betreffende Gruppen hier eintragen:
NameA = "Optionsfeld 83"        'Ein beliebiges Feld der Gruppe A
NameB = "Optionsfeld 451"       'Ein beliebiges Feld der Gruppe B
' Die aktuellen Zellverknüpfungen werden hier bestimmt:
Set WertA = Range(ActiveSheet.Shapes(NameA).ControlFormat.LinkedCell)
Set WertB = Range(ActiveSheet.Shapes(NameB).ControlFormat.LinkedCell)
' Jetzt die Bedingung:
If WertB.Value < WertA.Value Then WertB.Value = WertA.Value
End Sub
Danke Daniel und Franz für Eure Hilfe.
LG,
Barbara

Anzeige
AW: Optionsfeld (Formularsteuerelement) abfragen
29.08.2014 16:28:09
fcs
Hallo Barbara,
Frage 1:
Du benötigst nur ein Makro für alle 3 Optionsschaltflächen
Nach Rechte-Maus-Klick auf die Optionsschaltflächen kannst du das Makro neu zuweisen und dabei immer das gleiche Makro verwenden. Die überzähligen beiden Makros kannst du löschen.
Frage 2:
definiere für die Zelle "C78" einen Namen, z.B.: Option_Gruppe1
Diesen Namen kannst du dann sowohl bei der verknüpften Zelle der OptionsSchaltflächen eintragen als auch im Makro verwenden.
Sub Optionsfeld467_Klicken()
MsgBox Worksheets(2).Range("Option_Gruppe1")
End Sub

So wird das ganze resistent gegen Verschiebungen der verknüpften Zelle, da diese den Namen immer behält.
Gruß
Franz

Anzeige
;
Anzeige

Infobox / Tutorial

Optionsfeld in Excel abfragen und optimieren


Schritt-für-Schritt-Anleitung

  1. Erstelle deine Optionsfelder: Füge mehrere Optionsfelder (Formularsteuerelemente) in deine Excel-Tabelle ein. Achte darauf, dass sie in einer Gruppe zusammengefasst sind.

  2. Makro zur Abfrage der Optionsfelder: Schreibe ein allgemeines Makro, das für alle Optionsfelder verwendet werden soll. So kannst du den Code zentral verwalten.

    Sub VerlinkteZelleAnzeigen()
       MsgBox Range(ActiveSheet.Shapes(Application.Caller).ControlFormat.LinkedCell).Value
    End Sub
  3. Makro zuweisen: Weise das oben erstellte Makro allen betroffenen Optionsfeldern zu. Du kannst dies tun, indem du mehrere Steuerelemente gleichzeitig auswählst, mit der rechten Maustaste darauf klickst und das Makro zuweist.

  4. Zellverknüpfung optimieren: Stelle sicher, dass die Zellverknüpfungen flexibel sind. Anstatt feste Zellen wie "C78" zu verwenden, definiere einen Namen für die Zelle (z.B. Option_Gruppe1), um die Wartung zu erleichtern.

    Sub OptionsfeldKlicken()
       MsgBox Worksheets(2).Range("Option_Gruppe1")
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Mehrere Makros für verschiedene Optionsfelder: Stelle sicher, dass du nur ein Makro für alle Optionsfelder verwendest, um Redundanz zu vermeiden.

  • Lösung: Verwende Application.Caller, um herauszufinden, welches Optionsfeld das Makro ausgelöst hat, und um die verknüpfte Zelle dynamisch zu bestimmen.

  • Fehler: Falsche Zellverknüpfungen: Wenn sich die verknüpfte Zelle ändert, kann das Makro fehlschlagen.

  • Lösung: Verwende benannte Bereiche für die Zellverknüpfung, um sicherzustellen, dass sie immer korrekt bleibt, auch wenn der Inhalt verschoben wird.


Alternative Methoden

  • ActiveX-Steuerelemente: Wenn du mehr Flexibilität benötigst, kannst du auch ActiveX-Optionsfelder verwenden. Diese erfordern jedoch ein anderes Vorgehen in VBA.

  • Formularsteuerelemente kombinieren: Du kannst auch Kontrollkästchen (Checkboxen) in Kombination mit Optionsfeldern verwenden, um komplexere Auswahlmöglichkeiten zu erstellen.


Praktische Beispiele

  1. Einfache Abfrage mit Optionsfeldern:

    Sub OptionsfeldBeispiel()
       Dim linkedCell As Range
       Set linkedCell = Range(ActiveSheet.Shapes(Application.Caller).ControlFormat.LinkedCell)
       MsgBox "Der Wert ist: " & linkedCell.Value
    End Sub
  2. Wert zuweisen basierend auf einer Bedingung:

    Sub BedingteZuweisung()
       Dim WertA As Range, WertB As Range
       Set WertA = Range(ActiveSheet.Shapes("Optionsfeld 1").ControlFormat.LinkedCell)
       Set WertB = Range(ActiveSheet.Shapes("Optionsfeld 2").ControlFormat.LinkedCell)
    
       If WertB.Value < WertA.Value Then
           WertB.Value = WertA.Value
       End If
    End Sub

Tipps für Profis

  • Verwende strukturierte Programmierung: Halte deinen VBA-Code sauber und strukturiert, um die Wartung zu erleichtern.

  • Dokumentation: Kommentiere deinen Code gut, damit du und andere Benutzer verstehen, was jeder Teil des Codes bewirken soll.

  • Testen: Teste deine Makros gründlich, um sicherzustellen, dass sie in allen möglichen Szenarien funktionieren.


FAQ: Häufige Fragen

1. Kann ich das gleiche Makro für mehrere Optionsfelder verwenden?
Ja, du kannst ein Makro für alle Optionsfelder verwenden, indem du Application.Caller nutzt, um das aktive Steuerelement abzufragen.

2. Wie kann ich die verknüpfte Zelle eines Optionsfeldes ändern?
Du kannst die verknüpfte Zelle über die Eigenschaften des Optionsfeldes im Menü "Formularsteuerelemente" ändern oder einen benannten Bereich verwenden.

3. Was passiert, wenn ich die Zellverknüpfung nicht definiere?
Wenn du keine Zellverknüpfung definierst, kann das Optionsfeld keinen Wert speichern, und dein Makro wird möglicherweise nicht wie gewünscht funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige