ExcelのVBAは便利なんですが、よく分からないというのが本音です。(^0^)
Sub test5()
Dim maxrow As Long
Dim maxcol As Long
Dim rngwork As Range
maxrow = Range("A1").End(xlDown).Row
maxcol = Range("A1").End(xlToRight).Column
maxrow = Cells(Rows.Count, 1).End(xlUp).Row
maxcol = Cells(1, Columns.Count).End(xlToLeft).Column
Range(Cells(1, 1), Cells(maxrow, maxcol)).Copy Range("F5")
End Sub
中程のmaxrow,maxcolをゲットする方法はネットで調べてその通りです。正常に動きます。
rngwork = Range(Cells(1, 1), Cells(maxrow, maxcol))がエラーになります。
これの理由が分かりません。(@_@)
--------------------------------------------------------------------------------
分かりました。この場合はオブジェクト変数なので Setを使うと言うことです。
Set rngwork = Range(Cells(1, 1), Cells(maxrow, maxcol))
でエラーが出なくなります。めでたしめでたし。
--------------------------------------------------------------------------------
Range(Cells(1, 1), Cells(maxrow, maxcol)).Copy Range("F5")を
Range(Cells(1, 1), Cells(maxrow, maxcol)).Copy
Range("F5")
と2行にしただけでエラーになります。多分他のプログラム言語のように自由に記述できない
んですね。全部コピーするときは1行に書いて、例えば値のみのコピーの場合は2行に書いて
.PasteSpecial Paste:=xlPasteValuesを追記する。
---------------------------------------------------------------------------------
やはり最後にはオブジェクトの開放が有った方が良いんでしょうね。
Set rngwork = Nothing
※無くてもsubが終了時点で開放されるようです。普通は無くても影響ない、と言うことらしいですね。
---------------------------------------------------------------------------------
※コメント投稿者のブログIDはブログ作成者のみに通知されます