VBA初心者です。 ①~④の動作をVBAで動かしたく、 以下のようなコードで動くところまでたどり着きました。

Visual Basic | Excel26閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0

ThanksImg質問者からのお礼コメント

回答いただいたコードがまさにイメージ通りです。 つたないこちらの説明から意図を汲んでいただき、元のコードを生かしつつ、初心者でも理解しやすいコードを記載いただきありがとうございます。 大変勉強になりました。

お礼日時:5/4 23:41

その他の回答(2件)

1

よく意味が分かりません Worksheets("Sheet1").Range("A2:C2").Copy Worksheets("Sheet2").Range("B2:D2").PasteSpecial (xlPasteValues) ・ ・ Worksheets("Sheet1").Range("A500:C500").Copy Worksheets("Sheet2").Range("B2:D2").PasteSpecial (xlPasteValues) これでは SHEET1の A:C列の行を変えても すべて SHEET2の Range("B2:D2")の 同じセルに張り付ける 事になります 上の行のコピーが 全く役に 立ちません。 SHEET1の A2:C500の 全ての値を SHEET2の B2:D500へ 転記するということなら Worksheets("Sheet2").Range("B2:D500").VALUE=Worksheets("Sheet1").Range("A2:C500").VALUE で できます。 同様に Worksheets("Sheet1").Range("D2:G500")=Worksheets("Sheet1").Range("D7:G505").VALUE この2行で できます。 左辺の範囲のセルを 右辺の範囲のセルに 値のみ 代入です 1行のみの必要は ありません 2:500 と 7:505 498行 一気に代入できます。 条件は 左右のセルの行、列とも それそれ 同じであること 指定に .VALUE と つけることです。

1人がナイス!しています

1

違うかも。 Sub Test() For i = 3 To 500 Worksheets("Sheet2").Range("B2:D2").Value = Worksheets("Sheet1").Range("A" & i).Resize(1, 3).Value Worksheets("Sheet1").Range("D" & i).Resize(1, 4).Value = Worksheets("Sheet2").Range("D7:G7").Value Next i End Sub

1人がナイス!しています

提示されたコードの「シート名の数字(1と2)」が「全角」なので、そのままにしています。 本当の環境が半角数字ならば修正が必要です。 Sheet1 ↓ Sheet1