• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロのchangeイベントについて)

エクセルマクロのchangeイベントについて

このQ&Aのポイント
  • エクセルマクロのchangeイベントについての質問です。マクロを作成しましたが、動作しません。
  • 質問者は「Private Sub Worksheet_Change」イベントを使用してマクロを作成しましたが、うまくいきません。
  • アドバイスをいただきたいと思います。なぜ動かないのか理由がわかりません。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

Private Sub Worksheet_Change(ByVal Target As Range)  Dim i As Long  dim w as workbook  if Target.address <> "$B$4" then exit sub  set w = Workbooks.Open(Filename:="c:\osaruPKsarch\sarch.xls")  with w.worksheets("シート名") 'またはシート番号。試す前に正確に直すこと   ' For i = 51 To 55   '  .cells(3, i) = .cells(7, i)   ' Next i   .range("AY3:BC3").value = .range("AY7:BC7").value  end with End Sub 言わずもがなですが,起動させたいシートのシート名タブを右クリックしてコードの表示を選んで現れたシートに書かなければダメです。

osarusan0214
質問者

お礼

fmfm~ ちょっと使い方がわからない構文がいくつかあるので、示していただいたコードを解析する所からやってみます^^ ありがとうございます~^^

その他の回答 (2)

  • Azzz___
  • ベストアンサー率40% (9/22)
回答No.2

こんにちは。 No1さんの回答にもありますが、イベントが発生していないのは 恐らく該当するアクションがシート上で行われてないからだと思います。 もしくは、(今回は可能性が低いと思いますが)イベント自体は発生しているが、 途中で止まっていることも考えられると思います。 このような場合は、コードに仕掛けを入れることで、問題がどの部分で起こっているのか 突きとめる方法がいくつかあります。 ・ブレークポイントを入れる エディタ画面のコードに例えば「Private Sub Worksheet_Change(ByVal Target As Range)」に カーソルを置いて「F9」を押します。 この状態でプログラムが動くか確認します。 ・MsgBoxを入れる。 任意の場所にMsgBoxを入れます。例えば「MsgBox "ここまで処理"」などと入れておくと いいです。後はそれをずらしていけば、どこに問題があるのか分かります。 ・STOPを入れる 上記と同じで、コードの中に「STOP」文を入れます。 これも処理が流れていればSTOPの部分で止まりますので、どこまで処理が進んでいるか 分かります。 上記の方法で探すとどこに原因があるか分かると思います。 慣れてなければ、標準モジュールに簡単なプロシージャを作成し、それで試すと 上記がどのような働きを持っているのか分かると思います。 (説明を理解するより実際に試してみた方が直感的に分かると思います) 文法エラーは「実行時エラー」と表示されるので、問題はすぐに発見できますが、 質問者さんのような場合、いわゆる論理エラーの場合は上記の方法を使うことで より短い時間でどこに問題(バグ)があるのか発見できて、やりやすいです。

osarusan0214
質問者

お礼

ありがとうございます^^ atopやMsgBoxは入れてみたんですが、動きがおかしくどこが悪いか見つからなかったですToT >慣れてなければ、標準モジュールに簡単なプロシージャを作成し、それで試すと これを試してみますね^^b ありがとうござました!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

質問異は、何がしたいのか文章ではっきり書くこと。初心者の場合突拍子もない方法(コードややり方)でやるときがあるので。例 Set Target = Range("b4")   がそれらしい。 質問には、コードしか挙げてない。 多分「B4セルの値が変わったら何々したい」だろう。その場合 If Target。Address="$B$4" Then ・・・ End If End Sub この方式を使う場合$やBを追う文字にすることに気をつけて。

osarusan0214
質問者

お礼

たしかに^^; 書き方下手で申し訳ありません^^; なるほど$をちゃんと指定しないといけないんですね! やってみます! ありがとうございます!

関連するQ&A