• ベストアンサー

VBAの変数宣言について

VBAの変数宣言について サイトを調べながら仕事で色々と自動化しています。VBAを学び始めてまだ日が浅いので疑問は尽きないのですが、一番気になるところを一つ。 変数宣言の As ~ ってのがどうも苦手です。 とりあえず変数として使いたいけど、As ~ の ~ でなにを入れたらいいか分からず、入れないまま使っています。やはり、良くないのでしょうか? 上手に覚えるコツはありますか?

noname#229810
noname#229810

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (715/1478)
回答No.2

入れたほうがいいです。 入れないとVariant になります。Variant はメモリーを食う上速度も遅いです。 また、Asを入れると、数字を入れるべきところに文字を入れようとすると、エラーになるので、デバッグがしやすくなります。 初心者であれば、 Long(整数) Double(実数) String(文字) この3つがあれば大丈夫ではないかと思います。 後、オブジェクトを扱うなら、 Object も必要になります。 私は、他に Date・Integer ・Range ・Boolean も使いますが、これらは使わなくても、プログラムは作れます。メモリーの節約や、デバックをしやすくするために使っています。 これ以外は使ったことはありません(ファイルを扱うときByteを使ったことがある)。実際に使うのはこんなものです。 どんな形があるかだけを大まかに頭に入れておけば、綴りは、その都度調べればいいです。綴りまで覚える必要はありません。やっていればそのうち頭に入ります。頭の3文字ほどを覚えれば、後は自動入力できます。

noname#229810
質問者

お礼

variantはメモリを食うって知りませんでした…。 頑張って覚えて見ます!

その他の回答 (1)

  • ballville
  • ベストアンサー率47% (233/487)
回答No.1

>As ~ の ~ でなにを入れたらいいか分からず、入れないまま使っています これでいいです。変数の型が途中で変わるような場合、Asの後ろに書くとすればAs Variant となるのですが、As以降をの記述を省略しても同じ意味になります。 http://officetanaka.net/excel/vba/variable/03.htm 問題があるとすれば、宣言した変数をあとで足し算でつかうときですが、これについても上のURLで説明しています。

参考URL:
http://officetanaka.net/excel/vba/variable/02.htm

関連するQ&A

  • vbaの 変数の宣言 記号は使えない?

    vbaの 変数の宣言 記号は使えない? Sub test1() dim st @ End Sub みたいに変数の型を As String ではなく記号で表現ってできないんでしたっけ? エラーになってしまいます。

  • Access2010のVBAにて(変数の宣言)

    Access2010にて複数のフォーム内で、「sql」という変数を宣言しています。 宣言例) Dim sql As String (sql は小文字) それが、あるときを境に、全て「SQL」となってしまいました。 一括置換でプロジェクト内の全ての「SQL」の宣言箇所を 小文字の「sql」に変換してみたのですが、置換作業が終わった直後に やはり大文字の「SQL」に戻ります。 特にこれといって動きに支障があるわけではないのですが、 他の変数の宣言を小文字で統一している事もあり、気になります。。。 なお、Accessでオブジェクト名を間違えて半角カナなどで 一度宣言してしまうと、その後オブジェクト名を修正しても、 VBAコード内では半角のオブジェクト名が自動補完されてしまいますよね。 これと同じような現象でしょうか。 これはAccessのバグになるのでしょうか。 それとも修正方法があるのでしょうか。 修正方法や対策をご存じの方は教えて頂けませんでしょうか。 宜しくお願い致します。

  • 実際に宣言した変数を使ってない場合

    vbaです。 標準モジュール内で Public str tmp As String 等で宣言しているのに、 実際に宣言した変数を使ってない場合があるのですが それを見つけ出すことはできますか? 宣言だけしていて使ってない変数が知りたいです。 ひとつずつ検索していくしかないのでしょうか?

  • VBA モジュールで共通に使う変数の宣言方法

    VBAにてプログラミングを覚えている者です。 現在、いくつかのモジュールがあり、それぞれDimにて宣言している共通の変数があります。 いくつものプロシージャに毎回宣言せず、どこかでひとまとめにしたいと思い、色々と調べています。 例えば、 Dim pic1 As Picture Dim cell1 As String Dim pass1 As String Dim pic2 As Picture などです。 Dimのほかに、Publicの宣言などがありますが、いま一つ使い方がピンときません。 共通宣言する変数をひとつのモジュールとして登録し、活用できると、いざ変更となったときに その内容だけ置き換えればいいと思うのですが、みなさんはどのように宣言をしていますか? (例えば、Stringなどは各モジュールで変更するのが大変だと思うのですが・・・) ヒントを教えていただければと思います。よろしくお願いします。

  • Excel VBAでグローバルな変数はどこで宣言すべきか?

    Excel VBAについての質問です(もしかするとExcelに限った話ではないかもしれません)。 宣言セクションで変数の宣言を行うとき、Publicステートメントをつけた場合の適用範囲(グローバルな範囲)がわかりません。 これは、Sheet、ThisWorkbook、標準モジュールなど、それぞれの宣言セクションの場合で違うのでしょうか? また、宣言が有効になるタイミングも違うのでしょうか? ネットで調べたり、本で調べたのですが、私の理解が不足しているのか、矛盾して書かれているように思います。 一方では全てでグローバルにあるように書かれているように思え、一方ではグローバルになる範囲が違うとかかれているように思うのです。 試してみてもいいのですが、確証がもてないままこれから使い続けるのは気持ち悪いので・・・。 ご回答いただけると幸いです。よろしくお願いします。

  • VBAの変数の宣言で数字はすべてDoubleにする

    ご意見教えてください。 VBAの変数の宣言で、数字はすべて、整数も含めてDoubleとして宣言した場合、どんな問題が考えられるでしょうか? また、実行速度が落ちるかも?しれませんが、気になるほど落ちるでしょうか

  • エクセル VBA 変数を一括で宣言したい

    こんにちは。VBAプログラム初心者です。 変数を宣言する際、 dim オーダ番号 as long, オーダ番号2 as long, …オーダ番号100 as long という内容を一括で宣言することは可能でしょうか? イメージ的には下のような感じなのですが。。。 dim i as integer for i = 1 to 100 dim オーダ番号i as long dim 単価i as long next マクロで便利にするつもりが余計面倒になっていて困っております。 解決策を教えていただけましたら幸いです。 何卒よろしくお願いいたします。

  • VBAの一括型宣言について

    VBAにて 変数の先頭がA~Gまでの文字で始まるものはすべてsingle宣言をしたいのですが 昔使っていた記憶があるのですが忘れてしいました 現在も使用可能であれば宣言方法お教えください。 ex dim A1 as single dim B2 as single dim Ga as single これを ○○○ A~G as single のように宣言したい、 環境 offixe 2010 os windows 7

  • パブリック変数を宣言する時に・・・

    エクセルVBAの質問です。 モジュールAとBがあるとしまして、 Aの中にあるプロシージャからBの中のプロシージャを呼び出す場合、 変数を引き渡したいとしたらパブリック変数を使いますよね? この場合宣言は、 Aの宣言セクションでするのか、 Bの宣言セクションでするのか、 あるいは両方で同じ変数を宣言するのか、 どれなんでしょ?

  • VBでの変数宣言は1行に2つできないのですか?

    Visual BASICで変数宣言は1行に2つ以上記述しても実際、動作します。 例 DIM A、B as Integer このように宣言すると、AもBも整数となります。 しかし、このように宣言して、この変数を Call サブプログラム名(B) のように、パラメ-タとして引き渡そうとするとエラーとなってしまうようです。 よくわからないまま、 DIM A as Integer DIM B as Integer と分けて記述したらエラーがきえたようです。 変数宣言は1行に2つ以上まとめて記述してはいけないのでしょうか? VBは Ver 5 です。

専門家に質問してみよう