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

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

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

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

A 回答 (2件)

#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
    • good
    • 1
この回答へのお礼

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

Sub checkon()をどうやって作動させましたか?


Application.Callerをつかうからにはチェックボックスにマクロをセットしなければいけません。
    • good
    • 0

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