excel vbaで別シートのセルをrangeとcellsを使って指定する時の注意点
excel vbaでアクティブではないシートのセル範囲を参照するときに
どハマりしてしまいましたのでそちらの解決策を載せます。
失敗例
sheet1.range(cells(1,1),cells(1,1)).value=1
アクティブシートがsheet1ではないところで上記を実行すると下図のエラーが出ます。
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行も同じような記述が続いてしまうときには絶大な効果を発揮します。
皆さまお試しください。