エクセルマクロ&VBA初心者超入門講座(3)【セルの操作その2】

転職のための履歴書の書き方

 

はじめに

前回の「エクセルマクロ&VBA初心者超入門講座(2)【セルの操作をマスターしよう】」では、以下のポイントを説明しました。

  • オブジェクト
  • コレクション
  • プロパティ
  • メソッド
  • 引数
  • セル=Rangeオブジェクト

今回も基本的にはセルの操作を解説していきたいと思います。

 

単一セルの選択方法の復習

1個のセルを選択するには2通りの方法がありました。またセルのコピー方法も2通りありましたね。コードの解説はエクセルマクロ内のコメントをご覧下さい。前回の講座の内容を忘れてしまっていなければ簡単に理解できるはずです。

唯一、ひっかかる点があるとすれば、Cells(行番号, 列番号)がちょっとややこしいと感じるかもしれません。というのも、例えば、C5セルといった場合、C⇒5という並びは、列番号⇒行番号の順になっていて、Cellsで指定する順序とちょうど反対だからです。C5であれば、C=3列目5=5行目なので、これをCellsに落とし込むと、Cells(5, 3)となります。

念のため図示するとこんな感じです。

Cellsを用いたRangeオブジェクトの指定例

でも、まあ、何回かCellsを使っているうちに慣れるので、だいじょうぶです。最初だけややこしく感じる方もいらっしゃるかもしれませんが、すぐに馴染むので安心して下さい。

尚、上記Excelマクロの実行結果は以下のようになります。

Copyメソッドを用いたExcel VBAサンプルコードの実行結果

複数のセルを一気に選択する

さて、エクセルでは、単一のセルを選択するよりも、複数のセルを選択する機会の方が多かったりしますよね。いままではRangeで単一のセルを指定する方法だけ学びましたが、Rangeは複数のセルを選択することもできます。

 

サンプル1:A1セルからD3セルまでを選択するサンプル。

【実行結果】

エクセルVBAで複数のセルを選択する

実は、複数のセルをRangeで選択する際には1つ落とし穴があります。

例えば、Sheet2を選択している状態で、Sheets(“Sheet1”).Range(A1:D3).Selectと書いても一見なんの問題も無さそうです。

しかし、Sheets(“Sheet1”).Range(A1:D3).SelectはSheet1がアクティブな状態で実行しないと、「アプリケーションの定義またはオブジェクト定義のエラーです」とExcelに怒られてしまいます。

なので、必ず、Worksheets(“Sheet1”).Activateとセットで、Sheets(“Sheet1”).Range(A1:D3).Selectを実行するようにして下さい

また、今まではRange(“A1”)のように単一のセルを選択してきました。複数のセルを同時に選択するには、Range(“開始セル:終了セル”)のように(:)で区切ってセル範囲を指定します。

次のサンプルコードは飛び飛びのセルを選択するマクロです。

実行結果から言うと、以下のようになります。

Excel VBAにおいて非連続のセルを複数選択する

 

他のシートが選択されているとエラーになるので念のためWorksheets(“Sheet1”).Activateを書いておきます。これで確実にSheet1が選択された状態から始まります。

非連続の飛び飛びのセルを選択するにはRange(“セル1, セル2, セル3”)のようにカンマ(,)で区切って対象のセルを指定します。

次は下記のようなセルの選択を実現するマクロを紹介します。

複数セルを非連続に選択する

非連続な範囲選択をするには、Range(“セル1:セル2, セル3:セル4”)のように指定します。

あまり使わないかもしれませんが、こんなこともできたりします。

様々なセルの選択

上記のようにへんてこりんな選択をするには以下のようなコードを用います。

さらにシート内のセル全てを選択することも簡単にできます。

普段は、Cells(1, 2)等と指定しますが、()を使わずに、Cells.Selectとすることでシート全体を選択できます。

この辺りで「エクセルマクロ&VBA初心者超入門講座(3)【セルの操作その2】」を終わりにしたいと思います。次回もどうぞ宜しくお願い申し上げます。

【関連記事】

エクセルマクロ&VBA初心者超入門講座一覧に戻る

[AD]ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA