• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんにちは。 リンクされたシートのセルを消すとということであれば。。。。 ------------------------------------------ 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 ------------------------------------------ 勘違いでしたらご容赦願います。(^^;;; 以上です。

merlionXX
質問者

お礼

taocatさん、いつもありがとうございます。 おかげさまで無事解決しました。  .Range(ob.LinkedCell).とRange指定してやらないとダメなんですね? LinkedCellで取得できる"$E$1"とかは、ただの文字列であってセルではないという理解でいいですか?

その他の回答 (2)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.3

またまたこんにちは。(^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)     以上です。

merlionXX
質問者

お礼

ありがとうございました。 これからもご指導のほどよろしくお願い申し上げます。

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

ClearContentsがいけないのだと思います。 LinkedCellを設定する時はリンクする セルのアドレスを OptionButtons.LinkedCell="A1" のようにして文字列で設定するのだから、 消去する時も、 OptionButtons.LinkedCell=" " とすれば良いのではないでしょうか。

merlionXX
質問者

お礼

早速ありがとうございます。 それは試しましたが同じくだめでした。

関連するQ&A

専門家に質問してみよう