• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:次のマクロコードがわかりません)

マクロコードの使い方がわかりません

このQ&Aのポイント
  • マクロコードを使用して、指定の列の任意のセルで「1」と入力することで、その行の左隣の5つのセルのデータをコピーする方法がわかりません。
  • 質問文章で説明されているように、マクロコードを利用して、指定の列の任意のセルに「1」と入力することで、同じ行の左隣の5つのセルのデータを自動的にコピーする方法が知りたいです。
  • マクロコードを使って、指定した列の任意のセルに「1」と入力すると、その行の左隣の5つのセルのデータがコピーされる方法が分かりません。

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

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.4

こんにちわ 一箇所くらい自分で考えてほしかったのですが Cells(1, 1).PasteSpecial Paste:=xlPasteAll  ↓ Target.PasteSpecial Paste:=xlPasteAll

kokorororo
質問者

お礼

大変感謝いたします。ありがとうございました(._.)

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

こんなのでどうでしょう Private Sub Worksheet_Change(ByVal Target As Range)   With Target     If (.Count = 1) * ((.Column - 23) Mod 6 = 0) * (.Column >= 23) Then       If .Value = 1 Then Range(Target, .Offset(0, 4)) = Range(.Offset(0, -6), .Offset(0, -2)).Value     End If   End With End Sub

kokorororo
質問者

お礼

ご回答ありがとうございます。やりたいことと一致しています! しかしながらQ~U、W~AA、AC~AGまでは1と入力すればコピーできたのですが、 AK~AO、AQ~AU、AW~BA 、BE~BIはコピーができませんでした。 おそらくAGまでは規則的に並んでいるのですが、AGとAKの間は列が3つあるため そこからはずれが生じてしまいます;(わかりにくくて申し訳ありません;)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

#1です。 こちらのほうが解り易いかな Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long If Target.Count <> 1 Then Exit Sub If Not IsNumeric(Target.Value) Then Exit Sub If Target.Value <> 1 Then Exit Sub If Intersect(Target, Range("W:W, AC:AC, AK:AK, AQ:AQ, AW:AW, BE:BE")) Is Nothing Then Exit Sub i = Target.End(xlToLeft).Column - 5 Debug.Print Target.Address & " " & Target.End(xlToLeft).Column If i < 0 Then Exit Sub Cells(Target.Row, 1).Offset(0, i).Resize(1, 5).Copy Application.EnableEvents = False 'ここにコピーしたものをどうするかを記述する 例↓ Cells(1, 1).PasteSpecial Paste:=xlPasteAll Application.EnableEvents = True End Sub

kokorororo
質問者

お礼

ご回答ありがとうございます。こちらのコードを使わせていただくとすべて、A1セルからE1セルに コピーされてしまうため、利用できませんでした;

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.1

こんにちわ シートイベントは、理解されているものとして回答します。 そうでなかったら、補足をお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long If Target.Count <> 1 Then Exit Sub If Not IsNumeric(Target.Value) Then Exit Sub If Target.Value <> 1 Then Exit Sub If Intersect(Target, Range("W:W, AC:AC, AK:AK, AQ:AQ, AW:AW, BE:BE")) Is Nothing Then Exit Sub i = Target.End(xlToLeft).Column - 4 ' Debug.Print Target.Address & " " & Target.End(xlToLeft).Column If i < 1 Then Exit Sub Target.Offset(0, i - Target.Column).Resize(1, 5).Copy Application.EnableEvents = False 'ここにコピーしたものをどうするかを記述する 例↓ Cells(1, 1).PasteSpecial Paste:=xlPasteAll Application.EnableEvents = True End Sub

kokorororo
質問者

お礼

何度もご丁寧にありがとうございます;上記と同じ結果となったので申し訳ないです;

関連するQ&A