iSAMrx72's 思い付きBlog

今、新しいアカウントではじめました、への投稿となります。https://blog.goo.ne.jp/isamrx72

Excelに遊ばれてました。(^0^)

2015-07-03 23:58:41 | プログラミング言語

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が終了時点で開放されるようです。普通は無くても影響ない、と言うことらしいですね。

---------------------------------------------------------------------------------



最新の画像もっと見る

コメントを投稿