Excelの基本オブジェクト「セル」の参照、移動、コピー、選択、挿入、削除:Excelマクロ/VBAで始める業務自動化プログラミング入門(4)(2/4 ページ)
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、さまざまなセルの参照、移動、コピー、選択、挿入、削除の仕方に加え、行の高さ、列幅の変更方法などについて【Windows 10、Excel 2016に対応】。
Copyメソッドでセルのコピー
セルを別なセルにコピーしたい場合は「Copy」メソッドを使用する。Copyメソッドの書式は下記のようになる。
Copyメソッドの書式
Rangeオブジェクト.Copy Range({貼り付け先の先頭のセル番地、またはセル範囲})
Rangeオブジェクト.Copy ←Rangeを省略した場合はクリップボードに格納される
同じワークシートにコピーする場合
セルのコピーはリスト5のように記述する。リスト5では、A1セル〜B7セルの内容(けい線を含む)をA10セルにコピーしている。
Sub セルのコピー() Range("A1:B7").Copy Range("A10") End Sub
リスト5を実行すると図4のようになる。
他のワークシートにコピーする場合
他のワークシートにコピーする場合は、リスト6のように記述する。
Range("A1:B7").Copy Worksheets("Sheet2").Range("A1")
セルA1〜B7のデータを、ワークシート「Sheet2」のセルA1にコピーする。この場合はSheet2の存在が必須だ。
さまざまなセルの位置の選択方法
CurrentRegionプロパティでアクティブなセルを選択
作成した表内のセルを参照してみよう。作成した表全てを指定するには、Rangeの範囲指定で、基準となるセルと、アクティブなセルを選択する方法がある。それにはCurrentRegionプロパティを使用する。
図5のような表があったとすると、表を選択するにはリスト7のように記述する。
Option Explicit Sub アクティブな表を選択() Range("B3").CurrentRegion.Select End Sub
実行すると図6のように表内が選択される。
Endプロパティで、あるセルを基準に末端まで選択
次に、図6のB6のセルを基準に、B6のセルより終端行までと、右のセルの終端行までを選択してみよう。リスト8のように記述する。
Sub あるセルを基準に終端行まで選択する() Range("B6", Range("B6").End(xlDown).End(xlToRight)).Select End Sub
終端セルを選択するにはEndプロパティを使用する。書式は下記の通りだ。
Endプロパティの書式
Rangeオブジェクト.End({Direction})
オブジェクトにはRangeオブジェクトを指定する。{Direction}の値は表3を参照してほしい。
設定値 | 内容 | キー操作 |
---|---|---|
xlDown | 下方向 | [Ctrl]+[↓]キー |
xlUp | 上方向 | [Ctrl]+[↑]キー |
xlToLeft | 左方向 | [Ctrl]+[←]キー |
xlToRight | 右方向 | [Ctrl]+[→」]キー |
参考「Endプロパティ - MSDN」 |
リスト8を実行すると図7のように、B6のセルを基準に表が選択されている。
Offsetプロパティで、指定した数だけ離れたセルを選択
次に、図5の表の最終データのある、その1つ下のセルを選択してみよう。このような場合はOffsetプロパティを使用する。Offsetプロパティは、指定したセルの位置や範囲から、何行かずれたセルや、何列かずれた列の参照が可能なプロパティだ。書式は下記の通りだ。
Offsetプロパティの書式
{オブジェクト}.Offset({RowOffset},{ColumnOffset})
オブジェクトにはRangeオブジェクトを指定する。
{RowOffset}には、ずらす行の数を指定する。整数で指定する。正の数で下方向、負の数を指定すると上方向にずれる。省略した場合は0と見なされ、同じ行となる。
{ColumnOffset}には、ずらす列の数を指定する。整数で指定する。正の数で右方向、負の数を指定すると左方向にずれる。省略した場合は0と見なされ、同じ列となる。
Offsetプロパティの使用例はリスト9のようになる。
Sub 表の最終行にあるその下のセルを選択() Range("B3").End(xlDown).Offset(1).Select End Sub
実行すると、図8のようにB10のセルが選択される。B3セルの終端行まで選択し、Offsetプロパティに「1」を指定して、B3セルの終端行の、一つ下のセル「B10セル」が選択された。
表の最終行のその1つ下にあるセルはOffsetプロパティで選択できた。
Endプロパティで指定したセルの値を取得
次は、図5の「氏名」の最終行にある「正岡筆夫」の値を選択してみよう。リスト10のように記述する。
Sub 表の最終行の氏名を取得する() Dim myName As String myName = Range("C3").End(xlDown).Value MsgBox "最終行の氏名は" & myName & "さんです。" End Sub
まず、文字列型変数「myName」を宣言する。変数myNameにC3セルの最終行にある値を格納する。MsgBoxで変数myNameの値を表示する。「C3のセルの終端行」には「End(xlDown)」で移動できる。
実行結果は図9のようになる。
続いて、セルの挿入や削除の仕方について解説する。セルの挿入や削除は実際の業務でも多用される処理だ。このように頻繁に利用される処理こそ、マクロ化しておくべきだ。手動でセルの挿入や削除を行うより、ボタンにマクロを登録しておいて、ボタンクリック一つで実行できる方が何倍も手間が省ける。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ
- ピボットテーブルとは何か──「そもそも、何をする機能か」を理解する
Excelを通じて「ピボットテーブル」の基礎を学び、データ分析を実践するまでを習得する本連載。初回はピボットテーブルの基礎と、「どんなことができるのか」を解説する。 - どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう。