- ベストアンサー
EXCEL VBAの OLEObjectについて
EXCELでVBAを組んである処理をしているのですが、 EXCELのワークシート上にコントロールツールの OptionButtonをいくつか配置してあり、チェックのあるものを VBAのテーブルに入れて処理しようとしていますが、 ”実行時エラー1004 WorkSheetクラスのOLEObjectプロパティを取得できません。” というエラーが出てしまいます。 OLEObjectを使うのが初めてなので、初歩的なミスじゃないかと思います VBAの記述は以下のとおりです Sheets(ReferSheet).Select For i = 1 To 12 If Sheets(ReferSheet).OLEObjects("OptionButton" & i).Object.Value = True Then OpBt(i) = 1 End If Next どうかご指導お願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
OpBt(i) = 1 の部分、 ReferSheet の変数の値等不明な点はありますが、 コード自体には何の問題も見当たりません。 ので、エラーの原因はシートに配置したコントロールの方にあると思われます。 例えば、コントロールのOptionButton4だけないとか、そういう単純なことか、「ReferSheet」の変数に値が正しくはいっていないとかだと思われます。 新規のシートにオプションボタンを2つだけ配置し、アクティブにして、以下を実行してみてください 選択した方が、ダイアログで出ると思います。 これでエラーがないのであれば、コードの問題ではありません。 Sub macro() Dim i As Byte For i = 1 To 2 If ActiveSheet.OLEObjects("OptionButton" & i).Object.Value = True Then MsgBox i End If Next End Sub
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
>WorkSheetクラスのOLEObjectプロパティを取得できません。” 1.[コントロールツールボックス]-[オプションボタン] ではなく [フェーム]-[オプションボタン] を使っているのでは 2.製作中の追加、削除等で OptionButton名が OptionButton1~OptionButton12 と 揃っていないのでは Dim OpBt(1 To 12) Sub Test() Dim i As Long Sheets(ReferSheet).Select For i = 1 To 12 If ActiveSheet.OLEObjects("OptionButton" & i).Object.Value = True Then OpBt(i) = 1 End If Next '入力の確認 For i = 1 To 12 MsgBox "OptionButton" & i & " は、" & OpBt(i) Next End Sub
お礼
すみません。 勘違いしていました・・・実はシート名が間違っていて それに気付き走らすと、実行しました どうもお騒がせ致しました 初めて使うというので、思いっきりOLEobjectのスペックが 間違っているとばかり・・・・ 早速のご解答本当にありがとうございました!
補足
コントロールツールボックスを使用しています コントロールもOptionButton1~OptionButton12と確認しましたが きちんと登録できています・・・ 何がいけないのでしょうか?すみません、お手数お掛けします・・・
お礼
すみません。 勘違いしていました・・・実はシート名が間違っていて それに気付き走らすと、実行しました どうもお騒がせ致しました 初めて使うというので、思いっきりOLEobjectのスペックが 間違っているとばかり・・・・ 早速のご解答本当にありがとうございました!
補足
デバッグをかけて ReferSheet にはちゃんと値は入っていますし、他の処理でも使用していて、そちらは動いています。 新規シートにご指示どおり配置し、macroを実行するときちんと ダイアログが出ました。 しかしコントロールのOptionButton1~12は間違いなく 登録されています。 何がいけないのでしょうか? すみません お手数をお掛けします・・・