VBAのRangeとCellsは基本的には同じ挙動をします。用意されているVBAのメソッドやプロパティもほとんど同じです。しかしRangeとCellsの2つが用意されているのは、Rangeが分かりやすいからです。しかし中級者以上になると不便なところもあり、それはCellsの記事に記載されています。 … [Read more...]
VBAで一行全て指定する、Rowsでデータの最終行を調べる
VBAのCellsはデフォルトで縦横全てのセルを取得しましたが、Rowsは横一行を取得します。Rows単体では使いにくそうですが、データの最終行処理で頻出です。これはもうVBAのパターンなので、どこかに書いて保存しておいた方がいいかも。 … [Read more...]
VBAでFor文と親和性の高いCellsオブジェクトを使い倒す!
VBAでセルを指定する時、Rangeオブジェクトを使うことが多いですが、For文と組み合わせて使いづらいという欠点があります。Rangeオブジェクトは文字列で、しかもアルファベットを含んでいるので結構大変です。 しかしVBAのCellsは行と列を両方とも数字で指定するので、For文との親和性がとても高いのです。Cellsは上位オブジェクトがなにかで挙動が変わりますのでそれについても解説します。 … [Read more...]
VBAでGoToを使いたくない人へのDo〜Loop活用法
まずVBAではDo〜Loopで無限ループが実装できます。それに終了条件を追加するのがWhileキーワードです。 VBAで純粋な無限ループとして実装することはほとんど無いですが、2重のForを抜けたりするときなど、限られた場面では使用機会があります。悪名高いGoTo文を使用せずDo〜Loopをテクニカルに使用するイメージです。 … [Read more...]
VBAで柔軟な繰り返し処理を実装する!Do 〜 Whileステートメントとは
VBAで繰り返しといえばFor文です。 しかし、Forステートメントメントは明確に繰り返し回数が決まっていないと使用できないため、終了条件を指定して「とりあえず」繰り返し処理をするのがVBAのDo〜Whileステートメントです。 Do〜While制御文は使用機会の多いとてもパワフルな制御文です。 … [Read more...]