• ベストアンサー

大量の変数を定義するにはどうしたら良いですか?

VBA或いはVBのプログラムの最初で変数の型を定義したい場合、 変数が100個以上ある場合にはどうすれば良いのでしょうか? 100行にも渡って変数の定義を書くのはあまりにも見づらいと思います。何か良い方法がありましたら教えて下さい。

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

  • ベストアンサー
  • lesskey
  • ベストアンサー率33% (66/200)
回答No.4

> 100行にも渡って変数の定義を書くのはあまりにも見づらいと思います。 必要であれば特に問題ないとは思いますが、一行に複数の変数定義が可能です。 1. Dim a As Integer, b As Integer 2. Dim a, b As Integer ちなみにVB.netでは上記1,2の記述で変数a,bがどちらも Integer型となりますが、VBA or VB6.0以前ですと 変数aはVariant型、変数bはInteger型となるので注意が必要です。 また100個以上変数が必要と聞くと結構大掛かりなVBAだな~、と 感じてしまいます。作業変数を用意したり、配列を使用したりで 色々と工夫すれば大幅に削減出来そうな気がします。

その他の回答 (3)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

参考URLにあるように、変数名カンマで区切って書けば、少ない行数で書けます ...が、それより先に、100個も変数を使うような状況を見直し、配列や構造体/ユーザ定義型などを使う方がいいと思います。

参考URL:
http://msdn.microsoft.com/ja-jp/library/7ee5a7s1(VS.80).aspx
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

必要なら別に100行書いても良いかと。というか書くしかないです。 ただ、配列の使い方を知らないとか、ユーザ定義型を知らないとか、コレクションを知らないとか、ADO.Netを知らないとかだったら、先にそこらへん調べたらよいかと。

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

おなじ型ならカンマで区切って書くことができます。 同じあるいは似た目的の変数をまとめて記述すれば見やすいでしょう。 Dim a, b As Long ただし、私は一変数毎に書きます。 以前にカンマで区切ったら、後の変数(上記では b)が指定の型にならず、デバッグに手間取ったことがあるからです。 Dim a As Long Dim b AS Long

関連するQ&A

  • 変数の型を定義しなかった場合どうなりますか?

    現在、VBAを使ってプログラミングを行っているところなのですが、 一般的に、プログラムの最初で変数に対してintegerやlongといった型を定義してから使うというように教わりますが、このように型を定義しなくとも使うことが出来ます。もし定義しなかった場合、その変数の型は何に設定されているのでしょうか? では型を定義するメリット及び、せずに使った場合のデメリットは何なのでしょうか? 私が使っているのはVBAですが、他の言語では型を定義しなければ、その変数を使うことが出来ないというようなものもあるのでしょうか?

  • エクセルvbaの変数について

    エクセルVBAについて、同じ型の値が複数列あった際に、変数に取り入れる方法として、それぞれ一つずつ別々に変数に入れる場合と、ユーザー定義型変数を定義して入れる場合の二つがあると思いま すが、どちらの方がメモリを使わなくて済むのでしょうか。また、他にも長短があればご教示下さい。

  • エクセルのVBAでオブジェクトの配列変数は使えますか?

    VBですとオブジェクトの配列変数というか、コピーしたときに自動的に配列になってしまいますが、エクセルのVBAの場合でオブジェクトの配列変数は使えますか? なにをしたいかというと、ボタンが多すぎて一つ一つにプログラム定義は面倒、そこで配列にしてまわすことにしたいのですが、エクセルで可能でしょうか。 どなたかお願いします。

  • C# 変数の動的な再定義

    こんにちわ  変数の動的な再定義というものが可能かどうかお伺いしたく質問させていただきました。 具体的には宣言時にはpublic int numberと宣言しておいて、プログラムのLoad時に、プログラム内でdouble型で宣言しなおすといった内容です。 ※上記の内容は質問用のサンプルです。ジェネリックを使えばいいとかあると思いますがあくまで可能かどうかの質問です。 やりたいことは、プログラム実行時に型を決めて、コンパイルも通したいという内容です。 dynamicを使用すれば想定通りの動きのものはできましたが、別のやり方も模索しております。 プログラム内でなんとか再定義ができないものかと思ってます。

  • VBAで変数定義の必要性について

    ==(1)================= Dim abc As Long abc = 5 ===================== ==(2)================= abc = 5 ===================== あるパソコンで(2)のコードで 「オブジェクトまたはライブラリが見つかりません」 とのエラーになります。(多数のパソコンでエラーになりません) VBAに対して、変数が定義されなくても、値をセットされた際に、 変数属性を与えるとのように考えれば良いですか。 以上、よろしくお願いします。

  • エクセルVBA:変数の疑問?

    vba初心者です。 ちょっと疑問に思ったので質問します。 変数1 = XXXXX 変数2 = XXXXX 変数3 = XXXXX 変数4 = XXXXX 変数5 = XXXXX For i = 1 To 5 XXXX.YXXXX("変数" & i).xxxxx Next i 以上の様に"変数名 + 数字"の様な型を定義した場合 この、数字部分を生かしてループ処理などは可能なのでしょうか?

  • Accessでグローバル変数を宣言して定数を定義したい

    Access97でグローバル変数を持ちたいと思ったのですが、 それらしきものが見つかりません。 Public変数というものがあるのですが、これはプロシージャ-単位で しか定義できないようです。 ひとつのデータベース全体でグローバルに定義できる定数を持ちたいのです。 たとえば、データベース内で頻繁に読み込む必要があるファイルのPATH "C:\Program Files\Netscape\Communicator\"を 固定で持っておきたい。 何か方法はないでしょうか? よろしくお願いします。

  • VBにアクセスのデータベースを読み込みたい(変数の定義)

    こんにちわM(__)M VB超初心者です・・・ 一度テキストにそってアクセスのデータベースをVBで読み込んで、リストを表示したり・・・データを削除したり・・・といったものを作ったことがあるのですが、だいぶ忘れてしまいました。 (SQLというんでしたっけ?) 読み込んでからの処理はこれからいろいろヘルプなので調べていけば解決すると思うのですが、まず読み込む段階ではじめに変数の定義をしますよね? どうやらその変数の定義ができていないらしく、「ユーザー型変数の定義がされていません」といったエラーがでます(実行時) Public wspace As Workspace のWorkspaceが確かに青くなりません。 以前はこれを解決するために、コンポーネントの追加?みたいのでなにか機能を追加したような気がするのですが(人に聞いてやったのテキストがありません・・・)どの機能を追加したのか、思い出せないのです>< この変数の定義さえできれば後は進んでいけると思いますので、この点だけ教えていただきたいです。 またはアクセスデータベースを読み込む解説みたいのがのっているサイトがありましたら教えていただきたいです。(初心者でも理解できるもので) よろしくお願いしますM(__)M

  • VBAの変数の定義について

    いつもお世話になっております。 VBAでの変数の定義についてお尋ねします。 VBAの勉強を始めたばかりの超初心者です。 I.チェック:A列とC列の和をE列に記載してその正誤を判定。 II.リセット:E列をクリアし、A列、C列の数字をランダムに置き換える。 という練習問題のコードを私が書いたものです。 以下について質問させていただきます。 (1)下記はモジュールレベルでの変数の宣言になると思いますが、変数の定義?例えば、最終値 = Range("A4").End(xlDown).Rowはそれぞれのプロシージャで定義しなければならないのでしょうか? (2)モジュールレベルでの変数の宣言は,Dimではなく、Privateでやるべきなのでしょうか? (3)何か指摘事項があれば、教えてください。 超初歩的な質問で、申し訳ありませんが、よろしくお願いいたします。 Option Explicit Dim i As Integer '処理用カウンタ変数 Const 初期値 As Integer = 4 '表の最初 行 Dim 最終値 As Integer '表の最終 行 Sub チェック() 最終値 = Range("A4").End(xlDown).Row '表の最終行番号を取得 For i = 初期値 To 最終値 Step 1 If Cells(i, 1).Value + Cells(i, 3).Value = Cells(i, 5).Value Then 'A列+B列 Cells(i, 5).Font.Color = vbBlue '回答が正ならフォントを青 Else Cells(i, 5).Font.Color = vbRed '回答が誤ならフォントを赤 End If Next i End Sub Sub リセット() 最終値 = Range("A4").End(xlDown).Row '表の最終行番号を取得 For i = 初期値 To 最終値 Step 1 Cells(i, 5).ClearContents '回答をクリア Cells(i, 5).Font.Color = vbBlack '回答のフォントを黒 Cells(i, 1).Value = Int(Rnd * 100) 'A列にランダムな数値 Cells(i, 3).Value = Int(Rnd * 100) 'C列にランダムな数値 Next i End Sub

  • VB6では、Applicationは未定義なのでしょうか?

    VB6を使ってプログラムを書いているのですが、以下のソースの部分で エラーになりました。 Dim winname As String winname = Application.Caption <-- Applicationが未定義?  コンパイルエラー 変数が定義されていません。 というエラーメッセージが表示されます。 VB6では、Applicationは未定義なのでしょうか?

専門家に質問してみよう