- ベストアンサー
VBA
初歩的な質問させて頂きます。 エクセル2003VBAですが、 Dim a ~ と始まる変数宣言と、 Set オブジェクト(?)の違いは何でしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 あまり、言葉で覚えても意味がないです。 頭で覚えるよりも、入力で覚えたほうがよいです。 「変数 = オブジェクト 」で、コンパイルエラーなどが発生したら、それは、Set を付けるのだ、とか覚えておけばよいです。最初は、みんなそんなものだと思います。 ------------------------------------- Dim a As Object '(本来は、Range とか、はっきりしたものを入れる) というのは、それに合った専用の入れ物を用意すること。 Set 変数 = オブジェクト オブジェクト(Range, Sheet, Workbook など)を変数に代入すること。 ------------------------------------- 「変数の型の宣言」をしないと、一番大きな入れ物になってしまいます。 なぜ、するかというと、 省メモリのために、「変数の型の宣言」をしているわけです。そうすると、動きが早くなったり、取り扱いが分かりやすくなります。一番のメリットは、インテリセンスの(例えばオブジェクトに「.」を付けると、プロパテイやメソッドの候補が出てくる)メリットがあります。 なお、仕組みが分かるようになるのは、ずいぶん先の話、少なくとも、1年ぐらいは、あまり、本当の意味が分からないです。例えば、変数の型によって、答えが違ってきたりするという現象が出てくることがあります。
その他の回答 (2)
- merlionXX
- ベストアンサー率48% (1930/4007)
オブジェクト型変数ですね。 オブジェクト型変数とはオブジェクトを格納する専用の変数です。 オブジェクトとは、セル(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はつけません。
お礼
回答ありがとうございます。 もう一度勉強してみます。
- hana-hana3
- ベストアンサー率31% (4940/15541)
変数宣言は、必要な変数を準備する事です。 SETでは、用意した変数に意味(オブジェクトとして機能させる)を持たせる事です。
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。 実践あるのみですね。 頑張ります。