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のコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
このトピックに書きこむ |
---|