【Excel VBA入門】オブジェクトとは?初心者向けに概念をやさしく解説!
こんにちは、業務自動化ツール開発担当の吉池(@valmore_myoshi)です。
今回はオブジェクトについて解説します!VBAでExcelを操作するにはオブジェクト抜きにはできません。まさにVBAの本質といったところです。
耳慣れない言葉ですが、VBAに限らずすべてのプログラミング言語に共通の概念です。オブジェクトさえマスターできれば、プログラミング自体の理解力も上がるので頑張りましょう!
本記事では、オブジェクトの概念を必ず理解していただけるよう図解を駆使して解説しています。最後に簡単なプログラムを作り、実用的なオブジェクトの使い方をイメージしていただければ幸いです。
オブジェクトとは
オブジェクトを理解するには、まずオブジェクトという単語が表す意味を知る必要があります。その意味は、「もの」です。
「もの」は現実世界でいえば、この記事を執筆しているパソコンやみなさんが使っている机など、身の回りにある物質を意味します。
しかし、VBAの世界はExcelというデジタルの世界です。物理的な物質は存在しません。
では、Excel世界における「もの」とはなんでしょう?それは、ワークブックやワークシート、セルといったExcelを扱ううえで操作できる対象を指します。
現実世界のパソコンや机がExcel世界ではシートやセルにあたるわけです。オブジェクトのイメージ、つかめましたでしょうか?
Setを使ってオブジェクトを使う
VBAでオブジェクトを使うには変数宣言後にSetキーワードを使ってオブジェクトを代入します。数値や文字列といった基本的なデータ型とは異なり、オブジェクトを代入するときはSetが必須です!
Dim 変数名 As データ型 Set 変数名 = オブジェクト
例えば、セル範囲を示すRangeオブジェクトを変数に代入するコードは下記のようになります。
‘ 変数宣言 Dim rng As Range ‘ Setを使って変数にRangeオブジェクトを代入 Set rng = Range("A1:C3")
プロパティは性質
オブジェクトには性質が備わっています。この性質のことをプロパティと呼びます。
現実世界の机一つとっても材質や幅、引き出しがいくつ付いているかといった性質があります。VBAにおけるオブジェクトはシートやセルなので、シートの名前やセルに入っている値がプロパティにあたります。
プロパティは取り出したり、書き換えることが可能です。オブジェクトとプロパティをドットでつなげて値の出し入れします。
‘ プロパティの値を書き換えるとき オブジェクト名.プロパティ名 = 値 ‘ プロパティの値を使いたいときはプロパティ名を書けばOK! Debug.Print オブジェクト名.プロパティ名
例えば、セルに入っている値を示すプロパティはValueプロパティです。下記はValueプロパティを使って、A1からC3のセル範囲にりんごという値を入れています。
Range("A1:C3").Value = "りんご"
変数にオブジェクトを代入すれば下記のようにも書けます。
Dim rng As Range Set rng = Range("A1:C3") rng.Value = "りんご"
メソッドは機能
オブジェクトにはそれぞれ機能があり、その機能のことをメソッドと呼びます。
私たち人間でも、「食べる」「歩く」「話す」といった機能がありますよね。VBAのオブジェクトも同様です。
例えば、セル範囲を示すRangeオブジェクトにはコピー機能があります。下記では、A1からC3までの範囲をE5からG7の範囲にコピーしています。
Range("A1:C3").Copy Range("E5:G7")
メソッドはただオブジェクトを操作する機能だけを提供するわけではありません。返り値という概念も覚えましょう。
返り値とはメソッドを実行した結果、得られる値です。返り値は変数に代入する形で使えます。
例えば、新たにシートを追加する処理を考えてみます。WorksheetsオブジェクトのAddメソッドはシートを新たに追加するメソッドです。そしてその返り値は追加されたシートを指すWorksheetオブジェクトが返ってきます。
追加されたシートに続けて値を書き込みたいといったときに返り値を変数に格納しておけば、新しいシートを探す必要がなくなります。
' 追加されたワークシートを変数wsに代入 Set ws = Worksheets.Add ' 追加したワークシートに続けて値を代入 ws.Range("A1:C3").Value = "りんご"
よく使うオブジェクト一覧
オブジェクトはたくさんありますが、すべて覚える必要はありません。よく使う4つのオブジェクトだけ覚えて、残りは必要になったら調べればOK!
オブジェクト | 説明 |
Application | Excelアプリケーション全体を指す。 |
Workbook | ワークブックを操作する。 |
Worksheet | ワークシートを操作する。 |
Range | セルを操作する。 |
VBAでExcel操作を自動化するときは、操作したいオブジェクトを探すところから始まります。操作対象としては、ワークブックやワークシート、セルがほとんどでしょう。これらのオブジェクトを最初に覚えましょう。
オブジェクトを使って簡単なプログラムを作る
最後に簡単なプログラムを作ってオブジェクトの実用的なイメージをつかみましょう!
今回はシートを追加してシート名を変更、続いて追加したシートに値を入れるプログラムを作ります。実践でも新しくシートを作ってデータ入力する作業はあるあるだと思います。
プログラムを作るにあたり、必要なオブジェクトを考えます。今回はワークシートとセルを操作したいので、WorksheetオブジェクトとRangeオブジェクトを使いそうだな、と当たりをつけられます。
以下、コード例です。
Dim ws As Worksheet ' 追加されたワークシートを変数wsに代入 Set ws = Worksheets.Add ' ワークシート名を変更 ws.Name = "果物" ' 果物シートに続けて値を代入 ws.Range("A1").Value = "りんご" ws.Range("B1").Value = "みかん" ws.Range("C1").Value = "桃" ws.Range("D1").Value = "メロン"
まとめ
初心者がつまずきやすいオブジェクトについて解説しました。オブジェクトは単なる「もの」を意味しますが、VBAにおいてはワークシートやセルといった操作対象を指します。
Excel操作を自動化するときは何を操作したいのか考えてから、オブジェクトを選んでいきます。セルに値を代入したければRangeオブジェクトを使うといったイメージです。
まずは基本的なWorkbook、Worksheet、Rangeオブジェクトを覚えれば十分です。概念をゆっくり理解してぜひマスターしてください。