先日は、フォームコントロールのオプションボタンについて、ほんの少しだけ紹介した。
infoment.hatenablog.com
一方、ActiveXコントロールの場合、フォームコントロールに比べてマクロで出来ることが多いように思う。
そこで今回は、シート上に配置されたオプションボタンを管理するユーザーフォームの作成に挑戦する。
手始めに、↓ こんなものを準備してみた。
現時点では、未だ何も調整していない。従って、この8つのオプションボタンは3つのグループに分けられつつも、どれか一つしか選ぶことが出来ない。
とりあえず今回は、こんなフォームにしてみた。
この中身を埋めるべく、ユーザーフォームの初期化を作成。
Private Sub UserForm_Initialize()
Dim col As Collection
Set col = New Collection
Dim myObj As Excel.OLEObject
For Each myObj In ActiveSheet.OLEObjects
If myObj.progID = "Forms.OptionButton.1" Then
col.Add myObj
End If
Next
Dim Dict As Dictionary
Set Dict = New Dictionary
Dim ListSeq() As Variant
ReDim ListSeq(1 To col.Count, 1 To 3)
Dim i As Long
For i = 1 To col.Count
With col.Item(i)
ListSeq(i, 1) = .Name
ListSeq(i, 2) = .Object.GroupName
ListSeq(i, 3) = .Object.Caption
Dict(.Object.GroupName) = 1
End With
Next
GroupListBox.List = Dict.Keys
DetailListBox.List = ListSeq
End Sub
実行すると、↓ このようになった。
ここからどのように育てていくか、しばらく試行錯誤の日々が続きそうです。
参考まで。