1.変数関係 |
1.変数の宣言方法及び宣言場所 2.変数の型の種類 (他言語との比較表) 3.配列変数・動的配列変数の宣言の仕方 4.Def*** ステートメント 5.変数を宣言する時の注意 6.変数名の付け方 7.プログラムでよく使う(私が)英単語・略語(変数名) ※独自解釈に付 注意!! 8. 9. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.変数の宣言方法及び宣言場所 |
Visual Basicでは、変数を宣言しなくても使用できますが、変数は宣言していないとバリアント型になります。 バリアント型はメモリ消費も多く、処理速度も遅い又、変数名を間違って使うと新しい変数として扱われるため、エラーを見つけ難くなります。 それを防ぐために Option Explicit ステートメントを使いましょう。 ツール・オプションの変数の宣言を強制する(下図参照)に必ず、チェックを入れておきましょう ローカル変数(プロシージャレベル) 宣言したプロシージャだけで使える変数の事をいいます。 通常 Dim ステートメントを使って宣言します。 ローカル変数の値が保持されるのは、宣言したプロシージャの実行中だけです。通常、プロシージャの実行が終了すると、そのプロシージャのローカル変数の値は破棄され、ローカル変数が使っていたメモリが解放されます。 そのプロシージャが次に実行されるときには、すべてのローカル変数は再び初期化されます。 使用例 Private Sub Command1_Click() Dim Result As Long モジュールレベル変数(フォームモジュール・標準モジュール等) 通常モジュールの宣言領域(General)で Dim ステートメントや Private ステートメントを使って宣言します。 モジュールレベル変数は、モジュールが読み込まれている間、存在し、それが宣言されたモジュール内のすべてのプロシージャから参照できます。 Public に対する Private なので Dim より Private で宣言される方が多いようです。 因みに、私も モジュールレベルでは Private プロシージャレベルでは Dim ステートメントを使用するように使い分けています。 使用例 Option Explicit Private StrMyFileName As String グローバル変数 通常標準モジュールの宣言領域(General)でPublicステートメントを使って宣言します。 プロジェクト内のすべてのモジュールから利用できます。 Visual Basic アプリケーションでは、グローバル変数を使うのは複数のフォームでデータを共有する方法がほかにない場合に限定します。 使用例 Option Explicit Public Number As Integer ※ 詳しくは、ヘルプの[キーワード]タブで[変数]と入力して見ると変数についての色々な項目が表示されます、その中の[適用範囲]の項目を見ると詳しく記載されています。 |
2.変数の型の種類 |
※他の言語との比較は、下記サイト上に掲載されているので参考にして下さい。(又は、検索して調べて下さい。) [山崎はるかのメモ]サイト内 (VB.NET/VB6.0/CLR/C/C++/Win32API 型一覧表) http://www.nda.co.jp/memo/dim.html |
3.配列変数・動的配列変数の宣言の仕方 |
配列の添え字はカッコで表現する。又、60次元まで使用可能である。 Dim intWork(10) As Integer '0から10までの11個の配列を宣言したことになる Dim intWork(10, 5, 3) As Integer '3次元の264個の配列を宣言。 Dim intWork(2 To 10) As Integer '2から10までの9個の配列を宣言。 Option Base 1 を宣言すると1からの配列になる。 Option Base 文はモジュール単位で有効である。 Erase intWork で intWork(10) の値がすべて削除されます。 動的配列変数の宣言の仕方 通常の宣言領域で Dim intWork() As Integer 使用するプロシージャ内で Dim Max As Integer Max = 100 ReDim intWork(Max) Maxが変化したり、あらかじめきまっていないような場合、その都度個数分だけ配列を確保するような時に使用する。 又、Max が幾つになるか判らない様な場合、都度増やしていく事も出来ます。 ReDim Preserve intWork(Max + 1) この場合、格納されている値を失う事はありません。 |
4.Def*** ステートメント |
Def +型名で表されるステートメントで変数の範囲を指定すると、その名前で始める変数のデフォルトの型を変更することができる。 DefInt I-M '型指定なしのI〜Mで始まる名前の変数はInteger型となる DefStr P, S '型指定なしのP又はSで始まる名前の変数はString型となる For 〜 Next のカウンター用の変数の型宣言等には便利である。 但し、 1.変数名の大文字・小文字は区別されない 2.Def*** ステートメントは、モジュール単位で有効である。 3.型を明示的に指定して宣言した変数には効力を持たない。 などの注意点がある。(詳しくはヘルプを参照) ※ このような書き方もあると言う程度に留めておいて実際はご使用にならない方がいいかと思います。(視認性等が悪くなる) |
5.変数を宣言する時の注意 |
1行で複数の変数を宣言します。型が指定されていないので、 変数 I , J はバリアント型になります。 誤 Dim I, J, K As Integer, BirthDate As Date 正 Dim I As Integer, J As Integer, K As Integer, BirthDate As Date ヘルプには載っているのですがつい見落としがちになります。 この事が載っている参考書は少ないので、間違った使い方しておられる方も多いのでは(エラーにならないし) 又、下記のように変数名に型宣言文字(サフィックス)を付けて宣言する事もできます。 Dim I%, J&, Title$ 但し、上記のような使い方は、Visual Basic バージョン 2 とかの古いバージョンの時によく使用されていた書き方で、現在では殆ど使っている人もいないし、使用されないのがいいでしょう。 時々、掲示板の書込みに下記のような宣言の違いについての質問がありますが、.NET 等のVB6.0以降の書き方であって、VB6.0 及びそれ以下のバージョンではエラーとなりますので誤解なき様に。 正 Dim MyByte() As Byte 誤 Dim MyByte As Byte() |
6.変数名の付け方 |
変数名を付ける時、変数名から変数の型を読み取れるようにしておくと後で見なおしたりした時に、一々確認する手間も省けるし、他人が見た時に理解もしやすい。 変数名は、次に示す条件を満たす必要があります。 1. 変数名の先頭文字には、数字および記号は使えません。 2. 変数名には、ピリオド (.) や型宣言文字は使うことができません。 3. 変数名は、255 文字以内 (半角の場合) で指定する必要があります。 4. 同じ "適用範囲 (スコープ)" 内で、同じ変数名を複数使うことはできません。 又、変数のネーミングルールには下記のようなものがあります。 ハンガリアン記法 : 変数名に下記のようなプリフィックスを組み入れた名前の付け方でVB6.0 でよく使用された方法 ( 例 : intCount cmdExit ) Pascal形式 : 最初の文字と各単語の先頭の文字を大文字で記入する方法( 例 : FileName ) Camel形式 : 最初の文字は小文字で続く単語の先頭は大文字で記入( 例 : fileName ) 上記変数名のつけ方は、色々と議論があるようです。詳しくはここの[当サイト内・外の検索]から[それらの語句]をキーワードにGoogle等で検索して見て下さい。 因みに、ここのサンプルでは殆ど適当に付けていますが、オブジェクト名はデフォルトのままにしており、プロシージャレベルの変数名は、出来るだけ短くわかりやすくを心がけており、モジュールレベル変数は、場合によってプリフィックスを付けたり、変数名が長くなっても意味が解りやすいものになるようには心がけているつもりですが...。 データ型 プリフィックス 例
例 strHanatyan lngFileRecordNo intLoopCounter
|
7.プログラムでよく使う(私が)英単語・略語(変数名) ※独自解釈に付 注意!! |
私のように英語に弱いものは、いつも変数名で悩みます。普段使わないようなものはつづりや意味が思い浮かばないし、自分だけしかソースを見ない場合は、自分が判れば、なんでもいいのでしょうが、HP上で公開するとなるとそうもいきません。皆さんはどのようにされているのでしょうか? 上記は、Visual Basic マガジン等で書かれていた物を私なりの標準化にしたいと思い集めたものです。 いいお手本等ありましたら、教えて下さい。 |
8. |
9. |
検索キーワード及びサンプルコードの別名(機能名) |
変数名のつけかた 変数の宣言場所 変数の型 変数の宣言 変数のスコープ 変数の初期化 グローバル変数 配列変数 変数の代入 変数の配列 変数の定義 環境変数 |