変 数 関 係
                                                       玄関へお回り下さい。
1.変数の宣言方法及び宣言場所
2.変数の型の種類
3.配列変数・動的配列変数の宣言の仕方
4.Def*** ステートメント
5.変数を宣言する時の注意
6.変数名の付け方
7.プログラムでよく使う(私が)英単語・略語(変数名)
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

詳しくは、ヘルプの[キーワード]タブで[変数]と入力して見ると変数についての色々な項目が表示されます、その中の[適用範囲]の項目を見ると詳しく記載されています。


 フリーソフトのVBCheck(VB6アプリ高速化ツール) を使用すると未使用の変数や宣言不良等をチェックしてくれるので便利です。(私も使っています)
2.変数の型の種類
    
バイト型 (Byte) 1 バイト 0 〜 255
ブール型 (Boolean) 2 バイト 真 (True) または偽 (False)
整数型 (Integer) 2 バイト -32,768 〜 32,767
長整数型 (Long) 4 バイト -2,147,483,648 〜 2,147,483,647
単精度浮動小数点数型 (Single) 4 バイト -3.402823E38 〜 -1.401298E-45 (負の値)。1.401298E-45 〜 3.402823E38 (正の値)。
倍精度浮動小数点数型 (Double) 8 バイト -1.79769313486232E308 〜 -4.94065645841247E-324 (負の値)。4.94065645841247E-324 〜 1.79769313486232E308 (正の値)。
通貨型 (Currency) 8 バイト -922,337,203,685,477.5808 〜 922,337,203,685,477.5807
10 進型 (Decimal) 14 バイト 小数部分を持たない数値の場合、-79,228,162,514,264,337,593,543,950,335 〜 79,228,162,514,264,337,593,543,950,335 の範囲の値をとります。小数点以下 28 桁の数値の場合、-7.9228162514264337593543950335 〜 7.9228162514264337593543950335 の範囲の値をとります。絶対値の最小値は 0 を除いた場合、0.0000000000000000000000000001 です。
日付型 (Date) 8 バイト 西暦 100 年 1 月 1 日〜西暦 9999 年 12 月 31 日
オブジェクト型 (Object) 4 バイト オブジェクトを参照するデータ型
文字列型 (String) (可変長) 10 バイト + 文字列の長さ 0 〜 2GB
文字列型 (固定長) 文字列の長さ 65526 文字 になります。(ヘルプの表記は間違っているので注意)
バリアント型 (Variant) (数値) 16 バイト 倍精度浮動小数点数型の範囲と同じ。
バリアント型 (Variant) (文字列) 22 バイト + 文字列の長さ 可変長の文字列型の範囲と同じ。
ユーザー定義型 要素に依存 それぞれの要素の範囲はそのデータ型の範囲と同じ。
※ヘルプより抜粋(ヘルプ→ キーワード→  (データ型)→ 表示クリック)
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等で検索して見て下さい。

因みに、ここのサンプルでは殆ど適当に付けていますが、オブジェクト名はデフォルトのままにしており、プロシージャレベルの変数名は、出来るだけ短くわかりやすくを心がけており、モジュールレベル変数は、場合によってプリフィックスを付けたり、変数名が長くなっても意味が解りやすいものになるようには心がけているつもりですが...。

データ型 プリフィックス 例
データ型 プリフィックス 型宣言文字(サフィックス)
ブール型 (Boolean) bln  
バイト型 (Byte) byt  
Collection オブジェクト col  
通貨型 (Currency) cur @
日付型 (Date) dtm   
倍精度浮動小数点数型 (Double) dbl #
エラー値 err   
整数型 (Integer) int %
長整数型 (Long) lng &
オブジェクト型 (Object) obj  
単精度浮動小数点数型 (Single) sng !
文字列型 (String) str $
ユーザー定義型 udt  
バリアント型 (Variant) vnt  

   例
    strHanatyan
    lngFileRecordNo
    intLoopCounter
適用範囲 プリフィックス
グローバル g gstrUserName
モジュールレベル m mblnCalcInProgress
プロシージャ内 なし dblVelocity

詳しくは、ヘルプの[検索]タブで[定数と変数の名前付け基準]と入力して見ると詳しく書かれているのでご覧下さい。
7.プログラムでよく使う(私が)英単語・略語(変数名) ※独自解釈に付 注意!! 
    
意味 ソース上の表記・簡略名 元の単語
アプリケーション App Application
位置 Loca Location
位置 pos position 
一時的な Temp Temporary
一時保存領域 Buf Buffer
市場 Mkt Market
一覧表 List List
一般 Genl General
置く Put Put
送り状 Invc Invoice
オペレーション Ops Operations
会員・職員 Mbr Member
開始 Start Start
会社 Corp Corporate/Corporation
回数・数量 Count又はCnt Count
解放 Relese Relese
隠す Hide Hide
拡張 Extd Extend/Extended
幹部 Exec Executive
管理 Admin Administration
期間 Perd Period
Ctry Country
結果 Rslt・Ret Result
現在の Curr Current
検索 Find Find
減少 Dec Decrement
原本・管理人 Mstr Master
原料 Mtls Materiala
合計・総計 Total Total
合計・総計 Sum Sum
更新・修正 Update Update
顧客 Cstm Customer
国際 Intl International
個別 Individual Individual
コメント Comm Comment
コントロール Ctrl Control
在庫目録 Inv Inventory
最終 Last Last
最小 Mim Minimum
財政 Fin Finance/Financial
最大 Max Maximum
再配置・リセット Rst Reset
索引・指数 Idx/Indx Index
削除 Del Delete
支払い Pmt Payment
氏名 Name Name
従業員 Empe Employee
住所・番地 Address・Add・Addr Address
修正 Revise Revise
終了 Quit Quit
取得 Get Get
主要 Prim Primary
受領 Recd Received
順序 Seq Sequence
消去 Clear Clear
状況 Stat Status
詳細・ディテール Det Detail/Details
商品・物品 Item Item
職員 Ofcr Officer
数量・数値 Val Value
設定・セット Set Set
ゼロ(0)・空 Null Null
先頭 First First
増加 Inc Increment
総計 Amt Amount
挿入 Insert Insert
ソース Srce Source
その他 Othr Other
対象 Target Target
タイトル Titl Title
題名・主題 Sbj Subject
題名 Ttl Title
建物 Bldg Building
中間 Mid Middle
注文 Ordr Order
追加 Add Addition
通貨 Cur Currency
Mon Month
次の Next Next
停止 Stop Stop
停止 End End
定着・固定 Fix Fixed
伝票 Bilg Billing
電話番号 Tel Phone
統計 Stats Statistics
取消し Cancel Cancellation
長さ Len Length
バージョン Ver Version
始め Beg Beginning
番号・数量 Num Number
Tbl Table
標準 Std Standard
部門 Dept Department
プロジェクト Proj Project
文書 Doc Document
分析結果 Anal Analysis
平均 Avg Average
変数 Var Variable
補正 Revision Revision
前の Prev Previous
見せる Show Show
Source Source
無視 Ignore又はIgnr Ignore
文字 Char Character
ユーザー Usr User
要約 Sum Summary/Summaries
利子 Int Interest
Qty Quantity
割引 Disc Discount
    
対で使用する変数名
追加     : 削除

add         : remove()

挿入     : 削除

insert       : delete

始め     : 終り begin        : end
最初     : 最後

first        : last

取得     : 解放 get         : relese
取得     : 設定 get         : set
置く     : 取得 put         : get
増加     : 減少

increment       : decrement

上がる     : 下がる

up         : down

最大     : 最小

max         : min

大       : 小

big         : small

多い     : 少ない many                : few
長       : 短

long        : short

次       : 前

next        : previous

前       : 後 front        : back
新       : 旧

new         : old

開く      : 閉じる

open         : close

見せる     : 隠す show         : hide
開始     : 停止

start        : end

元に戻す    : やり直し

undo         : redo

その他プログラム上でよく使う変数名
For 〜 Next 等のループカウンター intLoop/lngLoop
MsgBox関数の返り値 intMsg
MsgBox関数用の文字列 strMsg
演算結果 intResult/lngResult
関数の返り値 intRet/lngRet
メニュー関係
ファイル(&F) mnuFile
  開く(&O) mnuFileOpen
  保存(&S) mnuFileSave/mnuFileSaveItem
  名前を付けて保存(&A) mnuFileSaveAsItem
  - mnuSep1/mnuBar1
  プリンタの設定(&U) mnuFilePrintSetup
  印刷(&P) mnuFilePrint
  終了(&X) mnufileExit
編集(&E) mnuEdit
  削除(&D) mnuEditDelete
  修正(&U) mnuEditUpdate
  コピー(&C) mnuEditCopy
  貼り付け(&P) mnuEditPaste
  切り取り(&T) mnuEditCut
  元に戻す(&U) mnuEditUndo
  やり直す(&R) mnuEditRedo
  すべて選択(&A) mnuEditDSelectAll
  選択の切り替え(&I) mnuEditInvertSelection
  検索(&F) mnuEditFind
  新規作成(&N) mnuEditNew / mnuEditNewCreation
  新規作成(&N) mnuEditNewItem
表示(&V) mnuView
  一覧(&L) mnuViewList
  詳細(&D) mnuViewDetails
  オプション(&O)... mnuViewOptions
ヘルプ(&H) mnuHelp
  目次(&C) mnuHelpContents
  トピックの検索(&S) mnuHelpSearch
  バージョン(&V) mnuHelpAbout
私のように英語に弱いものは、いつも変数名で悩みます。普段使わないようなものはつづりや意味が思い浮かばないし、自分だけしかソースを見ない場合は、自分が判れば、なんでもいいのでしょうが、HP上で公開するとなるとそうもいきません。皆さんはどのようにされているのでしょうか?
上記は、Visual Basic マガジン等で書かれていた物を私なりの標準化にしたいと思い集めたものです。
いいお手本等ありましたら、教えて下さい。


2006/02/13


VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0