vba-echte radio button aus der Gruppe val
In Excel-VBA:
Ich erstelle ein Formular. Diese form hat mehrere radio-button-Gruppen, von denen einige viele Optionen (aber nur ein radiobutton kann der Fall sein, pro Gruppe). Ich möchte in der Lage sein, um den Namen der radiobutton-das ist "wahr" pro Gruppe, statt vorher zu prüfen, jede radio-button-Zustand.
Zum Beispiel:
FAMILIE EIN
- Option1 - F
- Option2 - T
FAMILIE B
- Option11 - F
- Option12 - F
- Option13 - F
- Option14 - F
- Option15 - T
Was ich zu tun habe:
- Ist Option1 Wahr?
- Ist Option2 True? (ja... so Option2 für die Familie A)
- Ist Option11 Wahr?
- Ist Option12 Wahr?
- Ist Option13 Wahr?
- Ist Option14 Wahr?
- Ist Option15 Wahr? (ja... so Option15 für die Familie B)
, Was ich tun möchte:
- Taste, die Wahr ist für die Familie Ein? (Option2)
- Welche Taste ist auch für Familie B? (Option15)
Ist das möglich?
Dank für das schauen!
EDIT:
Das ist die Lösung! Basierend auf David ' s Beratung unter:
Dim ctrl As MSForms.Control
Dim dict(5, 1)
Dim i
'## Iterate the controls, and associates the GroupName to the Button.Name that's true.
For Each ctrl In Me.Controls
If TypeName(ctrl) = "OptionButton" Then
If ctrl.Value = True Then
dict(i, 0) = ctrl.GroupName
dict(i, 1) = ctrl.Name
i = i + 1
End If
End If
nun, wie definieren Sie die Gruppen/Familien? Sind die buttons innerhalb von Frames? Wie würden Sie wissen, wenn eine Gruppe beginnt und endet? Es ist nicht möglich, dies zu erreichen, ohne irgendeine Art von iteration oder ohne eine zusätzliche variable zum speichern der
Die Gruppe/Familie name ist eine Eigenschaft mit dem Namen GroupName. es werden alle zu der gleichen Gruppe standardmäßig, aber Sie können ändern, die Eigenschaft zum erstellen von neuen Familien. Also jeder radiobutton weiß, zu welcher Gruppe es gehört, weil es hat, gespeichert in der GroupName-Eigenschaft.
Buttons in frames zu sein scheint, die einen viel zuverlässiger als die GroupName-Eigenschaft. In jedem Fall sind Sie sicher gehen zu müssen, Durchlaufen jede Gruppe in einem
Ich dachte an eine Klasse (Liste), die speichert alles wahre, da kann es nur eine einzige wahre für Familie, müssen Sie Sie nur speichern Sie die Familie, und es ist aktuellen Wert true. Dies würde nur verlangen, soweit iteration die Liste ist lang = Menge der Familien.
true
Tasten Namen zu allen Zeiten.Die Gruppe/Familie name ist eine Eigenschaft mit dem Namen GroupName. es werden alle zu der gleichen Gruppe standardmäßig, aber Sie können ändern, die Eigenschaft zum erstellen von neuen Familien. Also jeder radiobutton weiß, zu welcher Gruppe es gehört, weil es hat, gespeichert in der GroupName-Eigenschaft.
Buttons in frames zu sein scheint, die einen viel zuverlässiger als die GroupName-Eigenschaft. In jedem Fall sind Sie sicher gehen zu müssen, Durchlaufen jede Gruppe in einem
For...Next
loop mit Exit For
- Anweisung, wenn die True
gefunden wird. Dies ist nicht besonders kompliziert. Ich werde sehen, ob ich mir vorstellen kann, etwas, das könnte einfacher sein, mit Ihrem set-up.Ich dachte an eine Klasse (Liste), die speichert alles wahre, da kann es nur eine einzige wahre für Familie, müssen Sie Sie nur speichern Sie die Familie, und es ist aktuellen Wert true. Dies würde nur verlangen, soweit iteration die Liste ist lang = Menge der Familien.
InformationsquelleAutor Amit Kohli | 2014-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowas scheint zu funktionieren. Ich habe dies in einem CommandButton click-Ereignis-handler, aber Sie könnten es überall.
InformationsquelleAutor David Zemens
Wenn Sie nicht wollen, zu bauen, ein Wörterbuch, diese erhalten das ausgewählte Optionsfeld für eine Gruppe. Die Immobilie .Kontrollen in der akzeptierten Antwort scheint nicht zu existieren in Excel 2010.
InformationsquelleAutor Jbjstam