• ベストアンサー

VBA

初歩的な質問させて頂きます。 エクセル2003VBAですが、 Dim a ~ と始まる変数宣言と、 Set オブジェクト(?)の違いは何でしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 あまり、言葉で覚えても意味がないです。 頭で覚えるよりも、入力で覚えたほうがよいです。 「変数 = オブジェクト 」で、コンパイルエラーなどが発生したら、それは、Set を付けるのだ、とか覚えておけばよいです。最初は、みんなそんなものだと思います。 ------------------------------------- Dim a As Object '(本来は、Range とか、はっきりしたものを入れる)  というのは、それに合った専用の入れ物を用意すること。 Set 変数 = オブジェクト   オブジェクト(Range, Sheet, Workbook など)を変数に代入すること。 ------------------------------------- 「変数の型の宣言」をしないと、一番大きな入れ物になってしまいます。 なぜ、するかというと、 省メモリのために、「変数の型の宣言」をしているわけです。そうすると、動きが早くなったり、取り扱いが分かりやすくなります。一番のメリットは、インテリセンスの(例えばオブジェクトに「.」を付けると、プロパテイやメソッドの候補が出てくる)メリットがあります。 なお、仕組みが分かるようになるのは、ずいぶん先の話、少なくとも、1年ぐらいは、あまり、本当の意味が分からないです。例えば、変数の型によって、答えが違ってきたりするという現象が出てくることがあります。

maintec
質問者

お礼

回答ありがとうございます。 実践あるのみですね。 頑張ります。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

オブジェクト型変数ですね。 オブジェクト型変数とはオブジェクトを格納する専用の変数です。 オブジェクトとは、セル(Rangeオブジェクト)やワークシート(Worksheetオブジェクト)など、VBAから操作する対象物です。オブジェクト型変数は、そうしたオブジェクトを格納する変数ですから、オブジェクトを入れた変数は、そのオブジェクトと同等に扱うことができます。 Sub test01() Dim c As Object 'オブジェクト型変数を宣言する Set c = Range("A1") '変数「c」にセルA1(Rangeオブジェクト)を入れる MsgBox c.Width 'セルA1の横幅(Widthプロパティ)を調べる End Sub 上記からSetをとったらエラーになります。 これに対し文字列変数の場合 Sub test02()    Dim c As String   '文字列型変数を宣言する    c = "merlion"     '変数「c」に文字列"merlion"を入れる MsgBox c End Sub のようにSetはつけません。

maintec
質問者

お礼

回答ありがとうございます。 もう一度勉強してみます。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

変数宣言は、必要な変数を準備する事です。 SETでは、用意した変数に意味(オブジェクトとして機能させる)を持たせる事です。

maintec
質問者

お礼

回答ありがとうございます。

関連するQ&A