VBA オブジェクト変数について



The following two tabs change content below.
アバター

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうも、taka(@takabou63)です(^^♪

さて、皆さん、【オブジェクト変数】ってご存知でしょうか?

何それ?という方もいらっしゃるかと思いますが、【オブジェクト変数】はどういうものか?

くらいは覚えておかないと少し凝ったプログラムを組むときに困る場合がありますのでよく覚えておきましょう(^.^)

VBAのオブジェクト変数とは何か?

さて、皆さんは【変数】については理解がある方が多いと思います。変数は格納したデータ型に性質が変わる物ですが。(数値型の場合は数値の性質)

この「オブジェクト変数」は【オブジェクトそのものを格納する変数】というものになるんです( *´艸`)

はい、私の説明が悪いので意味がわからないという方が大半かと思います(;・∀・)

実際見ていただいた方が伝わりやすいと思いますので下記のコードをご覧ください。

Sub sample()

Dim cel As Range '変数を宣言

Set cel = Range("B3")  '格納

cel.Value = "オブジェクト変数を使用"

Set cel = Nothing  

End Sub

はい、このコードを見てなにか気が付きませんか?

普通の変数を使っう場合【Cells(1,i)】のようにセルの指定の位置を数値で操作したり、値を操作するのが一般的ですが・・・

このコードの場合

変数(cel)がオブジェクト(セルB3】】のような使い方をしていますよね?

これがオブジェクト変数の特徴です(^^)/ちなみに実行も問題なく行えています

VBAのオブジェクト変数の使い方

さて、なんとなくVBAの【オブジェクト変数】についてイメージはつかめてもらえたでしょうか?(;・∀・)

ここからはこのオブジェクト変数の最低限の使い方についてご紹介していきます!

オブジェクト変数の宣言

【オブジェクト変数】もほかの変数と同じように宣言が必要となります。

Rangeオブジェクトを格納するにはRange型?を宣言します。

主に使われるのが

  • Workbook
  • Worksheet
  • Range

の3っつです。最低限これくらいを覚えておくのがいいかと思います(‘ω’)

さて、ここで一つ疑問が浮かびますよね?

【これ以外のオブジェクトを格納する場合はどうするのか?】

はい、たくさんのオブジェクトの型をすべて把握するのは大変です。なのでデータの型がわからない場合は【object型】を使用します。

オブジェクト変数のデータの型がわからなければ【object型】で宣言

オブジェクト変数の型がわからない場合はobject型を使用します。

このobject型は簡単に言えば、【オブジェクトなら何でも格納できる】型になります。

もちろん、型がわかっている場合は、その型を宣言するほうが可読性が上がるのでそちらの方がいいですが、もしわからない場合はobject型を使用しましょう!

オブジェクト変数にオブジェクトを格納する場合は【Set】を使う

たまーにコードを見てみると【Set】というコードを見たことがあるかと思います。

このSetというのは、【オブジェクト変数にオブジェクトを格納する場合に使用】します。

Set 変数名 = オブジェクト

先ほどのコードで説明すると

Set cel = Range("B3")  '格納

この部分です。これは変数【cel】にセルB3を格納することを表すコードというわけです(^.^)

ちなみにSetを使わないと【実行時エラー91】が返されます。

オブジェクト変数を破棄する【Nothing】

さて、通常【End Sub】で終了すると変数の値は破棄されるわけですが、オブジェクト変数については【【Nothing】を使用して変数を破棄しましょうという風習】があります。

Set 変数 = Nothing

この【Nothing】というのは【何も】という意味で、【この変数には何もオブジェクトがないですよ】という値を代入するということにをしています(*_*;

これにつきましては【必要派】と【不要派】がいらっしゃいますが、正直いえば私はどちらでもいいんじゃないかな?と思っております、【EndSub】まで実行されれば勝手に解放されるわけですので(*_*;

まぁ、少なからず【Nothing】が必要とされてしまう場合もありますので、その様な時以外は別に無理に使用しないで問題はないでしょう。

フォロー・チャンネル登録お願いします

VBA以外についてのブログはこちら↓

https://yb-log.com/

■Twitterフォロー

■YouTubeチャンネル登録

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

WordPressでブログを始めるなら

WordPress簡単インストール&安心の安定性

レンタルサーバー Xserver

コメントを残す

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