エクセルでアンケートを作っているので、オプションボタンを大量に作る必要があり、マクロを組んでいます。100行に渡る質問(I=1 to 100)で、各行にYes,No,N/Aの3ケのボタン(J=1 TO 3)を自動で作成したいのです。
ボタンは作成できるのですが、その後で、Caption,LinkdCell、GroupNameなどを設定する方法が判りません。どなたか教えてください。
For I = 1 To 100
For J = 1 To 3
ActiveSheet.OLEObjects.Add _
ClassType:="Forms.OptionButton.1"
, Link:=False, _
DisplayAsIcon:=False, Left:=100 + 20 * J, Top:=50 + 40 * I, Width:=72, Height:= _
25.5
Next J
Next I
自分も、以前に同様の処理でハマりました。
マクロの自動生成してもなぜか作ってくれないんですよね^^;
自分はその時「すぐに役立つエクセルVBAマクロ集」さんで勉強させて
いただきました
http://plaza18.mbn.or.jp/~Happy/
で、結論ですがActiveSheet.OLEObjects.Addはオブジェクトの作成なので、
この「オプションボタンを作る」段階ではオプションボタン固有のプロパティ
CaptionやGroupNameの設定はできないようです。
なので、出来上がったオプションボタンをオブジェクト変数に格納して、
個々に設定を入れていく、という方法を取りました。
下記のロジックでだいたい実現できているかと思います。参考までに。
'========================================================
Dim opt(100, 3) As Object
For i = 1 To 100
For j = 1 To 3
ActiveSheet.OLEObjects.Add( _
ClassType:="Forms.OptionButton.1", _
Link:=False, _
DisplayAsIcon:=False, _
Left:=100 + 20 * J, _
Top:=50 + 40 * I, _
Width:=72, _
Height:=25.5).Select
Set opt(i, j) = ActiveSheet.OLEObjects("OptionButton" & ((i - 1) * 3) + j).Object
Select Case j
Case 1
opt(i, j).Caption = "Yes"
Case 2
opt(i, j).Caption = "No"
Case Else
opt(i, j).Caption = "N/A"
End Select
opt(i, j).GroupName = "Grp" & i
Next j
Next i
'========================================================