Microsoft Excel

Herbers Excel/VBA-Archiv

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

Optionsfeld (Formularsteuerelement) abfragen

Betrifft: Optionsfeld (Formularsteuerelement) abfragen von: Barbara
Geschrieben am: 29.08.2014 15:40:28

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

  

Betrifft: AW: Optionsfeld (Formularsteuerelement) abfragen von: Daniel
Geschrieben am: 29.08.2014 16:27:43

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


  

Betrifft: AW: Optionsfeld (Formularsteuerelement) abfragen von: Barbara
Geschrieben am: 30.08.2014 02:02:10

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


  

Betrifft: AW: Optionsfeld (Formularsteuerelement) abfragen von: fcs
Geschrieben am: 29.08.2014 16:28:09

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


 

Beiträge aus den Excel-Beispielen zum Thema "Optionsfeld (Formularsteuerelement) abfragen"