| BeforeシートからAfterシートに貼付け | |
|---|---|
[196480] BeforeシートからAfterシートに貼付け- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ はみご -(2025/03/07(11:26)) □U R L/ お世話になります。
Beforeシートの8列5行のデータ、5カ所分を
Afterシートの8行目、14行目、20行目、26行目、32行目に
貼り付けたいです。
下記のコードでは、8行目に5回繰り返して貼り付けられるだけです。
ご教授よろしくお願いいたします。
Sub BeforeからAfterに配列を使用してコピーペースト()
Dim A(5) As Variant, B As Long
Dim gyo As Long
Worksheets(1).Activate 'シートBeforeをアクティブにする
A(1) = Range("D8:I12")
A(2) = Range("D14:I18")
A(3) = Range("D20:I24")
A(4) = Range("D26:I30")
A(5) = Range("D32:I36")
Worksheets(2).Activate 'シートAfterをアクティブにする
For B = 1 To 5
Range(Cells(8, "B"), Cells(12, "G")) = A(B) '数値を貼付け
Next B
End Sub
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒OTHER Version⇒OTHER ++++++++++++++++++++ | |
[196481] Re[1]: BeforeシートからAfterシートに貼付け- ■記事引用/メール受信=OFF■ □投稿者/ 匿名 -(2025/03/07(12:06)) □U R L/ >下記のコードでは、8行目に5回繰り返して貼り付けられるだけです。 当然です。以下のコードにそのように書いてあるからです。 >Range(Cells(8, "B"), Cells(12, "G")) = A(B) 「Range(Cells(8, "B"), Cells(12, "G")) = A(B)」 の「8」と「12」が何を意味しているか理解していますか。 「8」と「12」を変数(gyo)にいれて、あなた様の言う「貼りつけ」する行を 指定できるようにするのです。 これは、アルゴリズムの問題なので、自分で考えて訓練した方がよいと思います。 【考え方の参考】 最初に貼り付ける行は、8行目から8+4行目 次に貼り付ける行は、8+6行目から、(8+6)+4行目 ・ ・ さて、ここで変数行「gyo」をどのようにしてあげれば(いくつずつ足せばよいか)を考えてみてください。 | |
[196482] Re[2]: BeforeシートからAfterシートに貼付け- ■記事引用/メール受信=OFF■ □投稿者/ jindon -(2025/03/07(12:12)) □U R L/ こういうことですか? Range(Cells(8 + (B - 1) * 5, "B"), Cells(12 + (B - 1) * 5, "G")) = A(B) | |
[196483] Re[3]: BeforeシートからAfterシートに貼付け- ■記事引用/メール受信=OFF■ □投稿者/ jindon -(2025/03/07(12:15)) □U R L/ 別案 Sheets(1).[D8:I12,D14:I18,D20:I24,D26:I30,D32:I36].Copy Sheets(2).[b8].PasteSpecial xlPasteValues Application.Goto Sheets(2).[b8] | |
[196484] Re[4]: BeforeシートからAfterシートに貼付け- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2025/03/07(12:28)) □U R L/ 書き出し行を(Bに応じて)順次ずらさないとならないですよ。 > Range(Cells(8, "B"), Cells(12, "G")) = A(B) '数値を貼付け ↓ Cells(8 + 6 * (B - 1), "B").Resize(5, 6) = A(B) '5行x6列の数値を貼付け ↑ ※貼り付けデータは5行分でも、書き出し位置は6行毎なので・・ | |
[196485] Re[5]: BeforeシートからAfterシートに貼付け- ■ □投稿者/ はみご -(2025/03/07(14:07)) □U R L/ indonさん、半平太さん、ありがとうございます。
無事解決しました。
Sub BeforeからAfterに配列を使用してコピーペースト()
Dim A(5) As Variant, B As Long
Dim gyo As Long
Worksheets(1).Activate 'シートBeforeをアクティブにする
A(1) = Range("D8:I12")
A(2) = Range("D14:I18")
A(3) = Range("D20:I24")
A(4) = Range("D26:I30")
A(5) = Range("D32:I36")
Worksheets(2).Activate 'シートAfterをアクティブにする
For B = 1 To 5
For gyo = 8 to 36
Cells(8 + 6 * (B - 1), "B").Resize(5, 6) = A(B) '5行x6列の数値を貼付け
Next gyo
Next B
End Sub
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
| このトピックに書きこむ |
|---|