VBA 愛好家の備忘録

VBAを使用する中で疑問に感じたことなどを調べて紹介していきます。

excel vbaで別シートのセルをrangeとcellsを使って指定する時の注意点

excel vbaでアクティブではないシートのセル範囲を参照するときに

どハマりしてしまいましたのでそちらの解決策を載せます。

 

失敗例   

sheet1.range(cells(1,1),cells(1,1)).value=1

アクティブシートがsheet1ではないところで上記を実行すると下図のエラーが出ます。

f:id:ausutoraro12:20200603211601p:plain

sheet1を指定しているので問題なく実行されそうですが

実は別シートをranngeとcellsを使い指定するときにはcellsの前にもシート選択を

書かなければいけないのです。

 

成功例

sheet1.range(sheet1.cells(1,1),sheet1.cells(1,1,)).value=1

 

このように記述することで問題なくプログラムが実行されます。

 

補足

成功例のように記述しないといけないのですが

sheet1を何回も書くのは面倒です。

その場合はwith文を使います。

 

補足例

with sheet1

.range(.cells(1,1),.cells(1,1)).value=1

end with

 

補足例のように書く事でsheet1を.で置き換えて記述することができます。

今回だと1行だけの為あまり効果を感じれないかもしれませんが

5行、10行も同じような記述が続いてしまうときには絶大な効果を発揮します。

 

皆さまお試しください。