Home » エクセルマクロ・Excel VBAの使い方 » オブジェクト変数を理解できているのかを判定する方法

オブジェクト変数を理解できているのかを判定する方法

対象:Excel2007, Excel2010, Excel2013

「オブジェクト変数とは」
「オブジェクト変数 わからない」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。

VBAの、オブジェクト変数・オブジェクト型変数について調べている方による検索です。

[スポンサードリンク]

オブジェクト変数を理解するには少し時間がかかる

オブジェクト変数がわからない、という方にまずお伝えしておきたいのは、オブジェクト変数を本当に理解した状態になるには、少し時間がかかるということです。

オブジェクト変数ではない普通の変数の場合は、解説を読んだだけでも、
「へえ、なるほどね」
という状態になり得ます。

が、プログラミングの経験もなく、オブジェクト変数を使ったExcelマクロを作ったこともない方が、いきなりオブジェクト変数の解説だけを読んで、
「なるほど! オブジェクト変数ってこういうものなのか! わかった!」
などとは、決してならないことを、お伝えしておきます。

文法項目を本当に理解した状態とは

それは、英語の文法項目によっては、習っただけではどうもピンと来ないけれど、英語を英語のままで意味をとらえながら、何度も何度も例文を音読したりすることで、はじめて納得できるものがあるのと似ていると考えてください。

例えば、英語の関係代名詞を本当に理解したといえる状態とは、文法書の解説を読んだだけの状態では、ないはずです。

関係代名詞を使ったいくつもの英文を、英語のまま意味をつかまえながら、何度も何度も音読して、最低でも、関係代名詞の使われた英文を読むときに、英語の語順のままで意味を理解できるといった状態が、関係代名詞を理解したといえる状態のはずです。
更に、関係代名詞を使った文を関係代名詞を使わない文に分割できる、逆に、関係代名詞の使われていない文を関係代名詞を使った文に苦労なく書き直せるという状態が、より理解の進んだ状態のはずです。

オブジェクト変数について理解するということも、それと似た話であることを、まず、知っておいてください。

オブジェクト変数を理解できているかどうか判定する方法

そんなオブジェクト変数を理解するための方法はいくつかありますが、オブジェクト変数を本当に理解できているかどうかの判定は、一つの方法で確実にできます。

オブジェクト変数の使われていないコードを、オブジェクト変数を使ったコードに書き直すことができるかを試せば、オブジェクト変数について理解できているかどうかを簡単に判定することができます。

例えば、以下のようなオブジェクト変数が使われていないコードを、オブジェクト変数を使ったコードに書き直すことができるかを試してみるということです。


Sub オブジェクト変数が理解できているかを判定する()
 MsgBox Worksheets(1).Range("A1").Value
End Sub

上記のマクロを実行すると、一番左のワークシートのA1セルの値がメッセージボックスに表示されます。

「このマクロをオブジェクト変数を2つ使ったコードに書き直してください」
といった指示を出すと、オブジェクト変数を理解できていない方の場合は手が止まってしまうのに対し、オブジェクト変数が理解できていれば難なく書き直すことができます。

実際に2つのオブジェクト変数を使って書き直すと以下のようなコードになります。(実務で利用するマクロの場合、このコードについては、こんな書き方をする必要はなく、むしろやらないほうがいいはずですが)


Sub オブジェクト変数が理解できているかを判定する_オブジェクト変数利用()
 Dim sh As Worksheet
 Set sh = Worksheets(1)

 Dim rng As Range
 Set rng = sh.Range("A1")

 MsgBox rng.Value
End Sub

逆に、オブジェクト変数を使ったコードから、使われていないコードへの書き直しも、当然ながら、オブジェクト変数が理解できていれば可能で、理解できていない段階では行うことができません。

どこまで理解するのか

これまでExcelマクロの経験があるという方にたくさんお会いしてきましたが、残念ながら、この書き直しをできない方が、決して少数派ではなさそうなのが現実のようです。

ExcelやWordのマクロは、プログラマーではないエンドユーザーが自分自身の作業を楽にするために利用するもの、という性格を持っているため、どこまで理解する必要があるのかは、ケースバイケースで考える必要があります。どれだけ教育投資を行うのかという予算と共に、誰がマクロを管理していくのか、業務のどこまでをマクロにするのかなどと合わせて。

例えば、マクロを完全に自分一人で使っているような場合、オブジェクト変数について、本当に理解しているという状態になっていなくても、まぁ、いいのかも、しれません。

ですが、お仕事の中で誰かにマクロの管理を引き継ぎしなければならない場合、オブジェクト変数を理解できていない状態の人に、仕事で使っているマクロの引継ぎができるかというと、はなはだ疑問です。
そんなときに、今回ご紹介したオブジェクト変数を理解できているかの判定は有効なはずです。そしてオブジェクト変数を理解できていない人には、理解をするための時間を少しとってあげていただきたいと思っています。

最終更新日時:2019-06-04 09:12

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » オブジェクト変数を理解できているのかを判定する方法

TrackBack:4

TrackBack URL
オブジェクト変数の中身を確認するには from インストラクターのネタ帳
VBE(Visual Basic Editor)のローカルウィンドウを使うと、オブジェクト変数にどんな情報が格納されているのかを眺めることができます。
RangeオブジェクトからWorkbookオブジェクトを取得する from インストラクターのネタ帳
対象:Excel2007, Excel2010, Excel2013, Win...
プロパティは2種類ある from インストラクターのネタ帳
プロパティは、単なるデータを取得するプロパティと、オブジェクトを取得するプロパティに分類できます。
Cellsオブジェクトは存在しない from インストラクターのネタ帳
Excel VBAにCellsという名前のオブジェクトは存在しません。コード内でよく見かけるCellsはRangeオブジェクトを返すプロパティです。

Home » エクセルマクロ・Excel VBAの使い方 » オブジェクト変数を理解できているのかを判定する方法

「エクセルマクロ・Excel VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.