ここから本文です

【Excel2003・VBA】 フォームのチェックボックスを変更した時にマクロを実行させた...

bab********さん

2012/11/1314:00:19

【Excel2003・VBA】 フォームのチェックボックスを変更した時にマクロを実行させたいのですが・・・

Excelのシートにフォームのチェックボックスを設け(コントロールツールボックスの方ではありません)、On/Offが切り替わった時に自動で再計算のマクロを実行させようとしていますが、うまくいきません。


セルが変更になった時(セルを編集状態にしてEnterで確定した時)に自動実行させるのは、イベントプロシージャの「Private Sub Worksheet_Change」で実現できているのですが、チェックボックスの挙動には反応してくれません。


また、チェックボックスの書式設定内でリンクするセルを指定しており(本例では$D$3セル)、このセルの値が「True/False」に変化するのをイベントプロシージャ「Private Sub Worksheet_Change」内にif文記述で、

If target.Row = 3 And target.Column = 4 Then Call ○○○○(マクロ名)

としていますが、チェックボックスをOn/Offしても、マクロが実行されません。

ちなみに、チェックボックス自体に右クリックメニューでマクロの登録が行える為、実行させたいマクロを登録してあげることで要求は満たされるのですが、このシートを原本として「シートの移動やコピー」を行うと、コピー先のチェックボックスを操作した際、コピー元のマクロを参照しに行ってしまいます。
(なお、起動させたいマクロは標準モジュールでは無く、シートモジュールのイベントプロシージャの下に記述しています)


チェックボックスのOn/Offでマクロが自動実行され、なおかつシートをコピーしても単独でマクロ実行させる為には、どのようにすれば良いのでしょうか?


初心者かつ説明ベタで申し訳ありませんが、ご教授お願い致します。

閲覧数:
7,944
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

kei_jun_kuuさん

2012/11/1316:54:21

babeque_of_chickenさん

フォームではなく、コントロールツールボックスのチェックボックスの方が簡単では。。
そうすると、シートイベントを使わずに、、
Private Sub CheckBox1_Click()
If CheckBox1 Then
'Trueのときの処理または、Call 処理1
Else
'Falseのときの処理または、Call 処理2
End If
End Sub
のような記述で済みます。。
シートをコピペするときは、シートタブ内で右クリック→移動またはコピーでコピー。。

質問した人からのコメント

2012/11/14 11:10:44

kei_jun_kuuさん

早速のご回答ありがとうございます。
ご指示のとおり修正したところ、希望通りの結果が得られました。

はじめはコントロールツールボックスのチェックボックスを設置したのですが、
クリックしてもチェックボックスがOn/Offしなかった為、フォームの方を使用していました。
結果、ただ単に『デザインモード』になっている事に気がつかなかっただけでした・・・
初心者っぷりを露呈してしまい、お恥ずかしいかぎりです。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる