オプションボタンの大量作成マクロ


Taka  2003-04-11 10:50:53  No: 106670  IP: [192.*.*.*]

エクセルでアンケートを作っているので、オプションボタンを大量に作る必要があり、マクロを組んでいます。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

編集 削除
ぢゃわ  2003-04-15 16:52:21  No: 106671  IP: [192.*.*.*]

自分も、以前に同様の処理でハマりました。
マクロの自動生成してもなぜか作ってくれないんですよね^^;

自分はその時「すぐに役立つエクセル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
'========================================================

編集 削除