- ベストアンサー
Excel で位置が変動するセルの指定をVBAで作りたいのですが・・・?
ExcelのVBAはほとんど初心者なのです。 申し訳ございませんが教えていただきたいのです。 ひとつのシートに表が3種類あるのですが、それぞれ違うデータを 貼り付けようとしています。 元の表の形は同じです。3行の表でデータの数によって行が挿入 するようになっています。 1つ目の表は、開始のセルは決まっているので指定は出来るのですが 2つ目・3つ目の表の開始セルがその時々で変わってきます。 その時の、開始セルのマクロを作成したいのですが分からなくて 教えて下さい。 よろしくお願いします。 説明が下手ですみません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Sheets(3)に2つめのデータがあるとして 2つめ 3つめのマクロとして 以下のマクロでは希望と違いますか? Sub test2() Sheets(3).Select Range("B3:H100").Select'適当な行範囲指定してあります。 Selection.Copy Sheets(1).Select Range("B65536").End(xlUp).Offset(1, 0).Activate Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End Sub
その他の回答 (4)
- hallo-2007
- ベストアンサー率41% (888/2115)
>コピーする前にデータ分の行を挿入する 1つめのデータと2つ目のデータの間に空白の行を入れるということでしょうか? Sheets(1).Select Range("B65536").End(xlUp).Offset(1, 0).Activate を Sheets(1).Select Range("B65536").End(xlUp).Offset(3, 0).Activate Offset(行,列) 行の数字を変えるとコピイの先頭行が変わります。
お礼
hallo-2007様 下手な質問に何度も、ご回答をしていただきまして ありがとうございました。無事にマクロが組み込めました。 いろいろな組み方があり、今後の参考にしたいと思います。 本当にありがとうございました。
- misatoanna
- ベストアンサー率58% (528/896)
3つの表それぞれの選択範囲先頭セルに名前をつけておき、 Application.Goto Reference:="Moto1" Selection.CurrentRegion.Select Application.Goto Reference:="Saki1" Selection.PasteSpecial Paste:=xlPasteValues のように記述するのはいかがでしょうか。
お礼
お礼が遅くなりまして申し訳ございません。 すごく分かりにくい質問だったのにご回答していただき ありがとうございました。 すごく役にたちました。無事にマクロが組み込めました。 本当に、ありがとうございました。 まだまだいっぱい、分からない事がありますので 質問をしていたらよいアドバイスをよろしくお願い します。
- keirika
- ベストアンサー率42% (279/658)
仮に1つ目の表がA1セルから開始するとします。 まず、表1を貼り付けた後、1行あけた次のセルを選択する場合は Range("a1").End(xlDown).Offset(2, 0).Select さらに表2を貼り付け、1行あけるには ActiveCell.End(xlDown).Offset(2, 0).Select 次に表3を貼り付けと続きます。 ただし条件として、左端のデータに空白が無いことが前提となります。 また、この場合表を縦一列に並べることになりますので、 任意の位置に貼り付ける場合は、さらに工夫が必要になります。
お礼
今回は、本当にありがとうございました。 分かりにくい質問にご回答いただきまして、すごく参考に させていただきました。 また、よいアドバイスをお願いいたします。 ありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
>2つ目・3つ目の表の開始セルがその時々で変わってきます。 表の開始セルにどんな規則性があるのかわからなければ・・・ Sub Test() Range("A65536").End(xlUp).Offset(3, 0).Activate End Sub 上記は A列にデータが既に入っていて その3行下のセルの指定します。
補足
早速のご回答ありがとうございました。 説明が足りなくて申し訳ございません。 補足として1つ目の表のマクロを記載します。 これで分かりますか? Sub test() Sheets(2).Select Range("A1").CurrentRegion.Select Dim 行数 As Long 行数 = Selection.EntireRow.Count If 行数 > 3 Then Sheets(1).Select Range("B5").Resize(行数 - 4, 1).EntireRow.Insert End If Sheets(2).Select Selection.Copy Sheets(1).Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Range("A1").Select Sheets(1).Move ThisWorkbook.Close False End Sub また分からなければ補足いたしますのでよろしくお願いします。
補足
すばやい対応ありがとうございます。 先程の回答でしてみたら希望通り動きかけています。 後もうすこしなのですが、コピーする前にデータ分の 行を挿入するのですがどうしたらいいのか教えてください (例) Range("B5").Resize(行数 - 4, 1).EntireRow.Insert ↑ この部分の指定も教えていただけますか? 何度も何度も申し訳ございません