Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

2: VBA Formular - Zugriff auf Optionsfelder

Forumthread: 2: VBA Formular - Zugriff auf Optionsfelder

2: VBA Formular - Zugriff auf Optionsfelder
10.12.2013 11:01:57
Doof
Beim ersten posting wurde "Name der Optionsgruppe" gelöscht, da zuerst in brackets notiert.
Hallo,
programmiere gerade Formulare in VBA für Access (nehme mal an dass die Formularprogrammierung dabei keinen grossen Unterschied macht zu Excel).
Ich habe eine Optionsgruppe und da drin 4 Optionsfelder. Ich möchte
1.)
Die Namen der Optionsfelder durch direkten Zugriff herausfinden, ohne dass ich im Code Wissen über den Namen oder andere spezielle Eigenschaften des Optionsfeldes haben muss.
Ich stelle mir das irgendwie so vor:

For i=0 To "Name_der_Optionsgruppe".Controls.Count -1
Debug.Print ( "Name_der_Optionsgruppe".Controls.Items(i).Caption )
Next

So stelle ich mir das vor. Aber es geht nicht. Kann jemand helfen?
2.)
Auf ähnliche Weise wie 1.) den Namen des aktiven Optionsfeldes herausfinden. Wie geht das?
Grüße,
doofnuss

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2: VBA Formular - Zugriff auf Optionsfelder
10.12.2013 11:13:32
Rudi
Hallo,
eher so:
Sub aaaa()
Dim objC As Control
For Each objC In UserForm1.Controls
If TypeName(objC) = "OptionButton" Then
If objC.GroupName = "Gruppe1" Then
Debug.Print objC.Caption
End If
End If
Next
End Sub

Gruß
Rudi

Anzeige
AW: 2: VBA Formular - Zugriff auf Optionsfelder
10.12.2013 11:26:17
Doof
Hallo Rudi,
vielen Dank für die Info.
Anders geht das aber nicht? Ich muss alle Steuerelemente im Formular durchgehen und prüfen, ob sie ein Optionsfeld sind und dann abfragen ob sie zur Optionsgruppe gehören?
Genau diese Umständlichkeit wollte ich vermeiden. Ist ein Direktzugriff über den Namen der Optionsgruppe wie ich ihn geschrieben habe, gar nicht möglich?
Grüße,
Doofnuss

Anzeige
AW: 2: VBA Formular - Zugriff auf Optionsfelder
10.12.2013 11:57:16
Rudi
Hallo,
für die Optionsgruppe gibt es kein Objekt.
Du kannst die Buttons aber in ein Frame-Steuerelement packen und das durchgehen.
Optionbuttons innerhalb eines Frames gehören ohne Angabe eines GroupName zur gleichen Gruppe.
Gruß
Rudi

AW: 2: VBA Formular - Zugriff auf Optionsfelder
10.12.2013 13:05:17
Doof
Wieder was gelernt. Danke. :-)
Ich bin anscheinend noch grün bzgl. VBA.
Ich dachte die Optionsgruppe sei ein Objekt, denn der Editor bietet beim Auswahloperator für die Optionsgruppe ja Klassenelemente an. Man kommt bis zu
"Optionsgruppenname".Controls.Item
Wofür ist das dann gut?

Anzeige
AW: 2: VBA Formular - Zugriff auf Optionsfelder
10.12.2013 13:33:37
Rudi
Hallo,
ich hatte vergessen, dass du in Acess arbeitest.
Mag sein, das es das Objekt in Access-VBA gibt.
Access-VBA ist ganz anders als Excel-VBA
Gruß
Rudi

AW: 2: VBA Formular - Zugriff auf Optionsfelder
10.12.2013 13:45:53
Doof
Du hast aber wahrscheinlich trotzdem Recht. Denn der Direktzugriff
"Optionsgruppenname".Controls.Item
oder auch
"Optionsgruppenname".Controls.Item(0).Value
liefert kein Ergebnis. Ein Ausdruck mittels MsgBox liefert immer die Debugfehlermeldung "Ausdruck ohne Wert", auch in Access.

Anzeige
AW: 2: VBA Formular - Zugriff auf Optionsfelder
10.12.2013 15:28:28
Doof
Aber wie kommt das, dass der Direktzugriff nicht möglich ist? Das kann doch eigentlich nicht sein.

AW: 2: VBA Formular - Zugriff auf Optionsfelder
11.12.2013 15:51:44
Rudi
Hallo,
nehme mal an dass die Formularprogrammierung dabei keinen grossen Unterschied macht zu Excel).
da vertust du dich gewaltig.
z.B. hat ein OptionButton in Access keine Caption. Die Beschriftung ist ein Label. Das siehst du auch daran, dass du die Beschriftung unabhängig von der eigentlichen Schaltfläche positionieren kannst.
In Excel hat der OptBtn eine Caption.
Such dir ein Access-Forum.
Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zugriff auf Optionsfelder in VBA Formularen


Schritt-für-Schritt-Anleitung

  1. Erstelle ein VBA Formular: Öffne Excel und gehe in den Entwicklermodus. Füge ein neues UserForm hinzu.
  2. Füge eine Optionsgruppe hinzu: Du kannst eine Optionsgruppe in deinem Formular hinzufügen, indem du das Steuerelement "Optionsgruppe" aus der Toolbox auswählst.
  3. Füge Optionsfelder hinzu: Platziere mehrere Optionsfelder innerhalb der Optionsgruppe. Dies könnte für eine Preisliste nützlich sein.
  4. Zugriff auf Optionsfelder: Um auf die Optionsfelder zuzugreifen, kannst du den folgenden VBA-Code verwenden:

    Sub ZugriffAufOptionsfelder()
       Dim objC As Control
       For Each objC In UserForm1.Controls
           If TypeName(objC) = "OptionButton" Then
               Debug.Print objC.Caption
           End If
       Next
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Ausdruck ohne Wert"
    Mögliche Ursache: Du versuchst auf eine nicht existierende Eigenschaft des Optionsfeldes zuzugreifen. In Access hat ein OptionButton keine Caption, sondern ein Label. Achte darauf, die richtige Eigenschaft zu verwenden.

  • Fehler: Zugriff auf Optionsgruppe nicht möglich
    Mögliche Ursache: In VBA für Access ist die Optionsgruppe kein direktes Objekt wie in Excel. Du musst die einzelnen Optionsfelder durchgehen, um ihre Eigenschaften zu prüfen.


Alternative Methoden

  • Verwendung von Frames: Packe die Optionsfelder in ein Frame-Steuerelement. So kannst du die Buttons einfacher durchgehen, ohne jeden einzelnen in der Optionsgruppe abfragen zu müssen. Der Code könnte so aussehen:

    Sub ZugriffDurchFrame()
       Dim objC As Control
       For Each objC In UserForm1.Frame1.Controls
           If TypeName(objC) = "OptionButton" Then
               Debug.Print objC.Caption
           End If
       Next
    End Sub
  • Direkter Zugriff über den Namen: In Access funktioniert der direkte Zugriff auf die Optionsgruppe möglicherweise anders. Prüfe, ob du im richtigen Kontext arbeitest und die Namen korrekt geschrieben sind.


Praktische Beispiele

  1. Beispiel für eine Preisliste: Angenommen, du hast eine Optionsgruppe mit verschiedenen Preisoptionen. Du kannst den folgenden Code verwenden, um den aktiven Preis zu ermitteln:

    Sub AktivenPreisErmitteln()
       Dim aktivesFeld As String
       aktivesFeld = UserForm1.Optionsgruppe1.Value
       Debug.Print "Aktiver Preis: " & aktivesFeld
    End Sub
  2. Erstellen einer dynamischen Optionsgruppe: Mit dem folgenden Code kannst du eine Optionsgruppe zur Laufzeit erstellen:

    Sub AccessOptionsgruppeErstellen()
       Dim optGrp As MSForms.OptionButton
       Set optGrp = UserForm1.Controls.Add("Forms.OptionButton.1", "Option1")
       optGrp.Caption = "Preis 1"
       optGrp.Top = 10
       optGrp.Left = 10
    End Sub

Tipps für Profis

  • Verwende Debug.Print: Nutze Debug.Print, um den Inhalt von Variablen im Direktfenster anzuzeigen. Dies hilft dir, Fehler schnell zu identifizieren und den aktuellen Status deiner Variablen zu prüfen.
  • Ereignisgesteuerte Programmierung: Implementiere Ereignisse wie Click für deine Optionsfelder, um dynamisch auf Benutzerinteraktionen zu reagieren.
  • Dokumentation: Halte deine Codes gut dokumentiert, besonders wenn du mit komplexen Formularen und Steuerelementen arbeitest.

FAQ: Häufige Fragen

1. Frage
Wie kann ich den Namen eines aktiven Optionsfeldes herausfinden?
Antwort: Du kannst den Wert der Optionsgruppe abfragen, um zu sehen, welches Optionsfeld aktiv ist. Nutze dafür die .Value-Eigenschaft.

2. Frage
Gibt es einen Unterschied zwischen Access und Excel VBA bei Optionsgruppen?
Antwort: Ja, in Access gibt es keine direkte Entsprechung für die Optionsgruppe als Objekt, während du in Excel direkt darauf zugreifen kannst.

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