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 マガジン等で書かれていた物を私なりの標準化にしたいと思い集めたものです。
いいお手本等ありましたら、教えて下さい。 |