ピッシーのメモ帳

気になった情報の保管庫

Excel VBAで変なセル指定の書き方見つけてしまった

Excel VBAでセルに値を入れるときは、以下のようにCellsやRangeを使うのが多いと思う。


    '例:セルB1に数値を入れる
    Cells(1,2).Value = 100
    Range("B2").Value = 100
    

ところが、会社でExcelのマクロを見ているとこんなコードを見つけてしまった。


    Cells(1,2).Range("B2") = 100
    

Cellsの部分だけを見るとセルB1だと思ったけど、RangeでセルB2を指定している…。

これは一体どのセルに値が入るのか??

答え


セルC2だった。

なんか納得いかなかったのでマイクロソフトの公式ページを見てみた。

learn.microsoft.com

なんとなくだけど、Rangeで指定したセルの相対位置をCellsで指定しているんだろうということは分かった。

この書き方の意図は分からないが…。

 

インターネットで調べた限りではこの書き方を紹介しているサイトはなかったので、おそらく一般的な書き方ではないのだと思う。

でも、コンパイルが通るということは文法的には問題ないということか…。