- ベストアンサー
マクロコードの使い方がわかりません
- マクロコードを使用して、指定の列の任意のセルで「1」と入力することで、その行の左隣の5つのセルのデータをコピーする方法がわかりません。
- 質問文章で説明されているように、マクロコードを利用して、指定の列の任意のセルに「1」と入力することで、同じ行の左隣の5つのセルのデータを自動的にコピーする方法が知りたいです。
- マクロコードを使って、指定した列の任意のセルに「1」と入力すると、その行の左隣の5つのセルのデータがコピーされる方法が分かりません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ 一箇所くらい自分で考えてほしかったのですが Cells(1, 1).PasteSpecial Paste:=xlPasteAll ↓ Target.PasteSpecial Paste:=xlPasteAll
その他の回答 (3)
- mt2008
- ベストアンサー率52% (885/1701)
こんなのでどうでしょう 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
お礼
ご回答ありがとうございます。やりたいことと一致しています! しかしながらQ~U、W~AA、AC~AGまでは1と入力すればコピーできたのですが、 AK~AO、AQ~AU、AW~BA 、BE~BIはコピーができませんでした。 おそらくAGまでは規則的に並んでいるのですが、AGとAKの間は列が3つあるため そこからはずれが生じてしまいます;(わかりにくくて申し訳ありません;)
- ki-aaa
- ベストアンサー率49% (105/213)
#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
お礼
ご回答ありがとうございます。こちらのコードを使わせていただくとすべて、A1セルからE1セルに コピーされてしまうため、利用できませんでした;
- ki-aaa
- ベストアンサー率49% (105/213)
こんにちわ シートイベントは、理解されているものとして回答します。 そうでなかったら、補足をお願いします。 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
お礼
何度もご丁寧にありがとうございます;上記と同じ結果となったので申し訳ないです;
お礼
大変感謝いたします。ありがとうございました(._.)