こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel マクロでチェックボックスに枠線

エクセルマクロについて教えて下さい。

Excel2003を使用しています。
1つのシートに、フォームツールボックスからチェックボックスを沢山(300個以上)配置しました。

チェックボックスをクリック(オン)するのと同時にチェックボックスに赤い枠線を付けたいのですが、1つのマクロでチェックボックスのオブジェクト名を取得しながら枠線を付けることは出来ませんでしょうか?

以下のマクロを試してみたのですが、Application.Callerの所でエラーになってしまいました。

Sub checkon()

ActiveSheet.Shapes(Application.Caller).Select

Selection.ShapeRange.Line.Weight = 3#
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 10

i = ActiveCell.Address(False, False, xlA1)

Range(i).Select

End Sub

特定のチェックボックスを指定した場合は、問題ないのですが・・。
(例)ActiveSheet.Shapes("Check Box 1").Select

どなたか詳しい方、宜しくお願い致します。

投稿日時 - 2008-06-01 14:29:33

QNo.4066994

困ってます

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

#1です。
ついでですが、クリック時にいちいちCheckboxをSelectしなければ、
i = ActiveCell.Address(False, False, xlA1)
Range(i).Select
は不要ですね。またCheckBoxを再度クリックしてオフにした場合は枠線を赤から戻したいのではないですか?
サンプルです。↓

Sub checkon02()
With ActiveSheet.Shapes(Application.Caller)
.Line.Weight = IIf(.DrawingObject.Value = xlOn, 3#, 1#)
.Line.DashStyle = msoLineSolid
.Line.Style = msoLineSingle
.Line.Transparency = 0#
.Line.Visible = msoTrue
.Line.ForeColor.SchemeColor = IIf(.DrawingObject.Value = xlOn, 10, 0)
End With
End Sub

投稿日時 - 2008-06-01 15:18:03

お礼

merlionXXさん

お早い回答ありがとうございます。

マクロを使用する前に、VBEのデバックでエラーが出ていたので駄目だと思っていましたが、実際にマクロを登録してみたらサンプルで頂いたコードも質問時のコードも動作しました。


枠線を赤から戻すのは、別のマクロにて一括で戻すつもりでしたので気にしていませんでした。
(使用目的が、たくさん並んだチェックボックスからその時チェックしたものを簡単に識別する為だったので。)

解除に使うつもりだったコード
ActiveSheet.CheckBoxes.ShapeRange.Line.Visible = msoFalse


教えて頂いたサンプルコードだとチェックをオフにしたとき黒の細い枠線が残ってしまったので

.Line.Weight = IIf(.DrawingObject.Value = xlOn, 3#, 0#)

.Line.ForeColor.SchemeColor = IIf(.DrawingObject.Value = xlOn, 10, 9)

2箇所変更して使用させて頂きます。
(これでも線が無くなった事にはなっていないようですが・・。)

マクロ初心者なので、教えて頂けて本当に助かりました。
ありがとうございました。

投稿日時 - 2008-06-01 17:55:59

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

Sub checkon()をどうやって作動させましたか?
Application.Callerをつかうからにはチェックボックスにマクロをセットしなければいけません。

投稿日時 - 2008-06-01 14:44:20

あなたにオススメの質問