プロが教える店舗&オフィスのセキュリティ対策術

ワークシート上に十数個のオプションボタンがあります。このボタンのリンクするセルを一度に消去する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

A 回答 (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

------------------------------------------

勘違いでしたらご容赦願います。(^^;;;
以上です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/04 13:12

またまたこんにちは。

(^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)
 
 
以上です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/04 15:26

ClearContentsがいけないのだと思います。



LinkedCellを設定する時はリンクする
セルのアドレスを
OptionButtons.LinkedCell="A1"
のようにして文字列で設定するのだから、
消去する時も、
OptionButtons.LinkedCell=" "
とすれば良いのではないでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/04 13:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!