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
#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が役に立った」と投票しています