[[20251120215502]] 『マクロが実行できない』(山瀬〇之助) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『マクロが実行できない』(山瀬〇之助)

private sub シフト表_Change(ByVal Target As Range)



end sub

でマクロが実行できません。ステップインが全く反応しない。F5で実行しようとすると、左上にマクロっていうポップアップが出てきます。

試しに簡単な
sub test()

 msgbox "hello"
end sub

だと実行できます。原因がわかりません。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


 まぁ、引数定義してるし、Private属性だし... ね。

(白茶) 2025/11/20(木) 22:26:46


 名前から推測するとシフト表というシートにあるチェンジイベントのコードではないですか?

 シフト表_Change の中の最初の方にF9でブレイクポイントを設定してから、シートのセルを
 変更してみてどうでしょうか。
(無茶) 2025/11/20(木) 22:40:28

 Private sub シフト表_Change(ByVal Target As Range)
 ↓
 Private Sub Worksheet_Change(ByVal Target As Range)
 と元のように戻さないとダメです。

 Worksheetを具体的なシート名に変更したらよいと考えたと思いますが、それは逆効果です。
 それは事態を悪化させているのです。

 また、それはイベントプロシージャと言って、
 シートのセルを変更したときにそれを感知して、
 自動的に開始されるプロシージャなのです。

 だから、例えばA1セルに入力するといったことをしてみて下さい。実行されるはずです。
 プロシージャの途中にブレークポイントをセットしておくか、Stopを書いて置けば、
 そこで止めることもできます。

(xyz) 2025/11/20(木) 23:05:26


>private sub シフト表_Change(ByVal Target As Range)

↑どこのモジュールに書いてますか?

それと、どのようにしてマクロを起動したいのでしょうか?
その意図によりコードの書き方、書く場所が変わります。
(まっつわん) 2025/11/21(金) 07:55:49


 シフト表 というシートのシートモジュールに書いている前提でした。
 標準モジュールに書いていたら動作しません。
(勿論、他のプロシージャから呼び出すことはできるでしょうけど、本来の使い方ではありません。
  あくまで、シートのセルの値が入力やマクロ操作によって変化したことを起点に自動的に実行
  されるものです。)
 "Changeイベントプロシージャの使い方"などと検索して、基本的な考え方を確認されるとよいでしょう。
 例えば
https://daitaideit.com/vba-sheet-event-change/
(xyz) 2025/11/21(金) 09:23:01

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.