- ベストアンサー
VBA/フォームのオプションボタンのLinkledCellをクリア
ワークシート上に十数個のオプションボタンがあります。このボタンのリンクするセルを一度に消去するVBAを書いたのですが、エラーになってしまいます。どこがいけないのでしょうか? Sub test01() Sheets("質問書回答欄").OptionButtons.LinkedCell.ClearContents End Sub Sub test02() With Sheets("質問書回答欄") For Each ob In .OptionButtons ob.LinkedCell.ClearContents Next End With End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 リンクされたシートのセルを消すとということであれば。。。。 ------------------------------------------ Sub Test333() With Sheets("質問書回答欄") .Range(.OptionButtons(1).LinkedCell).ClearContents End With End Sub ------------------------------------------ Sub Test555() Dim ob As Object With Sheets("質問書回答欄") For Each ob In .OptionButtons .Range(ob.LinkedCell).ClearContents Next End With End Sub ------------------------------------------ 勘違いでしたらご容赦願います。(^^;;; 以上です。
その他の回答 (2)
- taocat
- ベストアンサー率61% (191/310)
またまたこんにちは。(^o^) >LinkedCellで取得できる"$E$1"とかはただの文字列であってセルではない その通りです。 MsgBox Sheets("Sheet1").OptionButtons(1).LinkedCell 上記のMsgBoxでは、「$E$1」というアドレスが表示されますよね。 ということは、LinkedCellは、Rangeオブジェクトでない! ということになります。。。。。よね??(^o^) また次のVartype関数で8(文字列型)が返ることでも分かりと思います。 MsgBox VarType(Sheets("Sheet1").OptionButtons(1).LinkedCell) 以上です。
お礼
ありがとうございました。 これからもご指導のほどよろしくお願い申し上げます。
- masa_019
- ベストアンサー率61% (121/197)
ClearContentsがいけないのだと思います。 LinkedCellを設定する時はリンクする セルのアドレスを OptionButtons.LinkedCell="A1" のようにして文字列で設定するのだから、 消去する時も、 OptionButtons.LinkedCell=" " とすれば良いのではないでしょうか。
お礼
早速ありがとうございます。 それは試しましたが同じくだめでした。
お礼
taocatさん、いつもありがとうございます。 おかげさまで無事解決しました。 .Range(ob.LinkedCell).とRange指定してやらないとダメなんですね? LinkedCellで取得できる"$E$1"とかは、ただの文字列であってセルではないという理解でいいですか?