マクロ講座19回-2 可変の表をコピーしてSheet2に貼り付け

マクロ講座

マクロ講座19回-2その2

それでは、マクロの中身を見てみましょう。
Sub 表のコピー()
    Range("A1:E11").Select
    Selection.Copy
    Sheets("Sheet2").Select
    ActiveSheet.Paste
End Sub    
    
ここで変更するのは、
Range("A1:E11").Select・・・・・(a)
の部分です。

記録マクロの編集 

(a)の部分は、
表の範囲を選択するコードです。

毎回、表の長さが異なるわけですから、
E11は最終行で、変数ですね。
そこで、変数を宣言する
マクロ講座13回で、解説した変数の宣言を使います。
最終行を変数に宣言します。

(1)最終行を、毎回取得するために、変数の宣言をしてやります。
宣誓!!
最終行を変数にします

と、宣言してやると、
コンピューターは、プログラムを処理していく中で、プログラム言語以外の
変数をきちんと理解して処理します。

(2)宣言はどうやるかというと、相手はPCですからコードで書くと、
Dim 最終行
これでいいんです。
Dim 最終行
で、最終行を変数としてあつかいます。
Dim 最終行 = 最終行を変数としてあつかいます。

という意味になるわけです。

通常は、

Dim 最終行 As Long

というように、変数の型を指定します。
VBAで整数を扱う型には、LongとInteger があります。
Long型が扱える数字の範囲は、-2,147,483,648 〜 +2,147,483,647 です。
Integer型が扱える数字の範囲は、-32,768 〜 +32,767 です。
どちらを使うかは、扱うものに合わせるのが一番ですが、悩むくらいなら、Longを使っていれば良いでしょう。
それで、変数である最終行の式は、
最終行 = Range("E65536").End(xlUp).Row
    
これをマクロの記録で作成したコードにあてはめてやります。

Sub 表のコピー2()
 Dim 最終行 As Integer
    Sheets("Sheet1").Activate
    最終行 = Range("E65536").End(xlUp).Row
    Range("A1:E" & 最終行).Select
    Selection.Copy
    Sheets("Sheet2").Select
    ActiveSheet.Paste
End Sub
    

これで、毎回表の長さがかわってもその最終行をコピーしてくれます。

このコードは、簡略化できます。

それから、表のあるSheet1を選択していないといけないので、

Sheets("Sheet1").Activate

の1行を加えましょう。

マクロを実行して確かめてくださいね。

今回はこれまで、That's it.
スポンサーリンク
スポンサーリンク