- ベストアンサー
VBAでオプションボタンの設定
- ワークシート上にOLEオブジェクトのオプションボタンを配置し、LinkedCellやGroupName、Captionを設定する方法について教えてください。
- 上記のコードでは、GroupNameとCaptionの設定でエラーが発生します。どのように修正すれば良いですか?
- エクセル2003でオプションボタンの設定を行いたい場合、どのような方法がありますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
opt.GroupName = "OptG" & i で、何がいけないのかわたしにはわかりませんが確かにエラーになりますね。 見よう見まねで以下のようにしてみました。 これでいかがでしょう? Sub test01() Dim n As Long, i As Long With ActiveSheet For n = 1 To 2 For i = 1 To 3 Set opt = .OLEObjects.Add(ClassType:="Forms.OptionButton.1", _ Left:=.Cells(i, n).Left, Top:=.Cells(i, n).Top, Width:=50, Height:=18) opt.LinkedCell = .Cells(i, n).Offset(, 4).Address opt.Object.GroupName = "OptG" & i opt.Object.Caption = IIf(n = 1, "Yes", "No") Next i Next n End With End Sub
その他の回答 (1)
- doara_2011
- ベストアンサー率59% (25/42)
optはOLEObjectオブジェクトです。 ところが、CaptionもGroupNameもOLEObjectオブジェクトのプロパティになっていないので 当然エラーになります。 ではどうすればよいかというと、Excelのヘルプによると >OLEObject オブジェクトのプロパティとして表されない、コントロールのプロパティは >Object プロパティを使用して実際のコントロール オブジェクトを取得して設定する >ことができます。 だそうです。 以上
お礼
ありがとうございます。 >OLEObject オブジェクトのプロパティとして表されない、コントロールのプロパティは >Object プロパティを使用して実際のコントロール オブジェクトを取得して設定する そういう理屈なんですか・・・・。 難しいですねえ。
お礼
ありがとうございます。 以下のようにためしたら上手くいきました。 Sub test02() Dim n As Long, i As Long With ActiveSheet For n = 3 To 5 For i = 3 To 10 Set myRng = .Cells(i, n) Set opt = .OLEObjects.Add(ClassType:="Forms.OptionButton.1", _ Left:=myRng.Left + 2, Top:=myRng.Top + 2, Width:=myRng.Width * 0.8, Height:=myRng.Height * 0.9) opt.LinkedCell = myRng.Offset(, 4).Address opt.Object.Value = False opt.Object.GroupName = "OptG" & i opt.Object.Caption = Choose(n - 2, "Yes", "No", "N/A") Next i Next n End With End Sub