- ベストアンサー
エクセルのマクロで指定のセルの値が変更されたら別のセルのデータを入力する方法
- エクセルのマクロを使用して、特定のセルの値が変更された場合に別のセルにデータを入力する方法について教えてください。
- 具体的な操作は分かっていますが、それをマクロにする方法がわからず困っています。どのように記述すれば良いのか教えてください。
- WorkSheetのChangeイベントに記述すれば良いのだと思いますが、具体的な記述方法を教えていただけないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
やるべき事を,淡々と,丁寧に。 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 #若しくは。 判らないポイントを,具体的に,質問に。
その他の回答 (1)
- hallo-2007
- ベストアンサー率41% (888/2115)
それぞれ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 質問をコードにすれば、こんな感じになるでしょうか?
お礼
まさに、完璧です。 コードの内容は把握しかねておるのですが、 そのまま、私のしたいことが出来ました。 ありがとうございました。 非常に簡潔で、完璧な回答でした。 感謝しております。