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

エクセルのマクロで指定のセルの値が変更されたら別のセルのデータを入力する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、特定のセルの値が変更された場合に別のセルにデータを入力する方法について教えてください。
  • 具体的な操作は分かっていますが、それをマクロにする方法がわからず困っています。どのように記述すれば良いのか教えてください。
  • WorkSheetのChangeイベントに記述すれば良いのだと思いますが、具体的な記述方法を教えていただけないでしょうか?

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

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

やるべき事を,淡々と,丁寧に。 ThisWorkbookシートに。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)  dim h as range  dim ha as range  dim hx as range  on error resume next  if not sh.name like "*週" then exit sub  set hx = application.intersect(target, sh.range("E5:E55,AC5:AC55,BA5:BA55,BY5:By55,CW5:CW55,DU5:DU55,ES5:ES55"))  if hx is nothing then exit sub  application.enableevents = false  for each ha in hx.areas   for each h in ha    if h = "" then     h.offset(0, 2).claarcontents     h.offset(0, 4).clearcontents    else     h.offset(0, 2) = worksheets("データ").range("C24")     h.offset(0, 4) = worksheets("データ").range("E24")    end if   next  next  application.enableevents = true End sub #若しくは。 判らないポイントを,具体的に,質問に。

maverick1974
質問者

お礼

まさに、完璧です。 コードの内容は把握しかねておるのですが、 そのまま、私のしたいことが出来ました。 ありがとうございました。 非常に簡潔で、完璧な回答でした。 感謝しております。

その他の回答 (1)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

それぞれ16枚のシートにWorkSheet Changeイベントを記述するとして Private Sub Worksheet_Change(ByVal Target As Range) 'E5~E55、AC5~AC55,BA5~BA55,BY5~BY55,CW5~CW55,DU5~DU55,ES5~ES55の値が変更されたら 'IF文でTargetが指定した範囲以外であれば何もしない。 If Intersect(Target, Range("E5:E55,AC5:AC55,BA5:BA55,BY5:BY55,CW5:CW55,DU5:DU55,ES5:ES55")) Is Nothing Then Exit Sub 'そのそれぞれのセルの2つ右と、4つ右にSheet名[データ]のC24とE24のデータ 'Taregtの2つ(或いは4つ)右のセルにシート名データの指定したセルの値を入れる Target.Offset(0, 2).Value = Sheets("データ").Range("C24").Value Target.Offset(0, 4).Value = Sheets("データ").Range("E24").Value End Sub 質問をコードにすれば、こんな感じになるでしょうか?

関連するQ&A