• ベストアンサー

Excel VBAで移動するセルを範囲指定したい

VBA初心者です。よろしくお願いします。 外部データの取入れで取得したデータを必要なだけコピーして使いたいのですが、毎回データの量が増えてきます。増えても増えた分だけ増やしていける方法はありませんか? データの最後から100個分だけ範囲指定してコピーしたいのです。 それと外部データを取り込んだときにマクロを実行したいのですがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

データの最終行を取得する方法ですが Range("A65536").End(xlUp) で可能です。 以下は、 'データの最終の行の1列目から、5行下の5列目までをコピィ GYOU = Range("A65536").End(xlUp).Row Range(Cells(GYOU, 1), Cells(GYOU - 5, 5)).Copy 'Sheet2の最終行より1行上から貼り付けです。 参考にして下さい。 Sheets("Sheet2").Select Range("B65536").End(xlUp).Offset(1,0).Select ActiveSheet.Paste

saab8743
質問者

お礼

ごめんなさい。 回答への補足を書きましたが、今、欲しいデータ数に書き換えて、やってみましたら、きちんとできましたありがとうございました。 Range("A65536").End(xlUp)これはいらなかったのですね。 助かりました!!!

saab8743
質問者

補足

ありがとうございます。 貼り付けて実行しました。.Endでコンパイルエラーになります。 取得するsheets名を指定しなければいけないのでしょうか?

その他の回答 (2)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

No1です。 GYOU = Range("A65536").End(xlUp).Row の説明しておきます Range("A65536")  はエクセルで使用できるシートの最大行数 End(xlUp) は、最大行から上方向へ移動でして空白で無い行へ Row    は、その行番号です。 質問に、データの最後の行からとありますので、必要では。 コマンドの意味を理解してみてください。 貼り付ける側でも、使用すると思います。

saab8743
質問者

お礼

不幸があり遠方へ出かけておりました。遅くなりましたが ありがとうございました。 プログラムを理解することが出来ました。 おかげさまで便利に使うことが出来ますた。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 データの最後から100個分という意味が良く分からないです。100行分ということではないのでしょうか? >外部データを取り込んだときにマクロを実行したい というのは、Excelが外部に抜けるので、マクロが待機状態にはなったとしても、その時にイベントが働かないので、無理というか、そういうマクロをわざわざ考える人はいないと思います。外部データ自体の取り込むマクロを考えるのが自然だと思います。 >取得するsheets名を指定しなければいけないのでしょうか? マクロが標準モジュールにある限りは、必要ないとは思います。 以下は、100行の場合 例: Sub Test1() Dim r1 As Range Dim r2 As Range Dim r As Range  Set r1 = Range("A65536").End(xlUp)  Set r2 = r1.End(xlUp)  If r1.Row - r2.Row = 0 Then   MsgBox "データがありません。", 48   Exit Sub  ElseIf r1.Row - r2.Row < 100 Then   Set r = Intersect(ActiveSheet.UsedRange, Range(r1, r2).EntireRow)   r.Select   'r.Copy Worksheets("Sheet2").Range("A65336").End(xlUp).Offset(1)  Else   Set r = Intersect(ActiveSheet.UsedRange, Range(r1, r1.Offset(-100)).EntireRow)   r.Select   'r.Copy Worksheets("Sheet2").Range("A65336").End(xlUp).Offset(1)  End If End Sub

saab8743
質問者

お礼

判りやすく、ありがとうございました。

関連するQ&A