1. 「&」は「+」を置き換えます
2. 変数の命名では大文字と小文字を区別し、ステートメントをよく整理し、ソース コードのメンテナンスを行う必要があります。
3. 以下の「オブジェクトの命名規則」を習慣づけてください。
4. 単純な選択条件の場合は、IIf()関数を使用します。
5. デバッグに Debug.Print を使用してみる
6. オブジェクトのプロパティを繰り返し変更する場合は、With....End With を使用するようにしてください。
7. プログラムをより標準化するために、MsgBox でメッセージ アイコンを使用するようにしてください。 8. 可能な場合は列挙型を使用します。
1. 「&」は「+」を置き換えます
多くのプログラミング言語では、文字列を接続するために「+」が使用されているため、曖昧さが生じやすくなります。文字列を連結するには「&」を使用することをお勧めします。
正しくない:
文字列としての Dim sMessage
sメッセージ = "1" + "2"
正しい:
文字列としての Dim sMessage
sメッセージ = "1" & "2"
注: 「&」の後にスペースが入っています
2. 変数の命名では大文字と小文字を区別し、ステートメントをよく整理し、ソース コードのメンテナンスを行う必要があります。
次の 2 つのコードを比較してみましょう。
難しいコードを読んでください:
SNAME を文字列として暗くする
整数としてのディム NTURN
NTURN = 0 の場合
SNAME = "vbeden" の場合
NTURN < 4 の間に行う
Nターン = Nターン + 1
ループ
終了の場合
終了の場合
読みやすいコード:
文字列としての Dim sName
整数としての Dim nTurn
nTurn = 0 の場合
sName = "vbeden" の場合
nTurn 中に行う < 4
nターン = nターン + 1
ループ
終了の場合
終了の場合
[索引に戻る]
3. 以下の「オブジェクトの命名規則」を習慣づけてください。
推奨される制御プレフィックス
制御タイプのプレフィックスの例
3D パネル pnl pnl グループ
ADO データと adoBiblio
アニメーションボタン ani aniMailBox
チェックボックス chk chkReadOnly
コンボ ボックス、ドロップダウン リスト ボックス cbo cbo英語
コマンド ボタン cmd cmdExit
コモンダイアログ dlg dlgFileOpen
コミュニケーションコム コムファックス
コントロール (特定の型が不明な場合にプロシージャで使用されます) ctr ctrCurrent
データ dat datBiblio
データ バインドされたコンボ ボックス dbcbo dbcboLanguage
データバインドされたグリッド dbgrd dbgrdQueryResult
データバインドされたリストボックス dblst dblstJobType
データ コンボ dbc dbcAuthor
データグリッド dgd dgdTitles
データリスト dbl dblPublisher
データリピータ drp drpLocation
日付ピッカー dtp dtp公開
ディレクトリリストボックス dir dirSource
ドライブ リスト ボックス drv drvTarget
ファイルリストボックス fil filSource
フラット スクロール バー fsb fsbMove
フォーム from frmEntry
Frame fra fra言語
Gauge gau gauステータス
グラフグラグラ収益
グリッド grd grd価格
階層型 flexgrid flex flexOrders
水平スクロールバー hsb hsbボリューム
画像 img imgIcon
画像コンボ imgcbo imgcboProduct
ImageList ils ilsAllIcons
ラベル lbl lblヘルプメッセージ
軽量チェック ボックス lwchk lwchkArchive
軽量コンボ ボックス lwcbo lwcboドイツ語
軽量コマンド ボタン lwcmd lwcmdRemove
軽量フレーム lwfra lwfraSaveOptions
軽量水平スクロールバー lwhsb lwhsbVolume
軽量リスト ボックス lwlst lwlstCostCenters
軽量オプション ボタン lwopt lwoptIncomeLevel
軽量テキストボックス lwtxt lwoptStreet
軽量垂直スクロールバー lwvsb lwvsbyear
線lin lin垂直
リストボックス lst lstPolicyCodes
ListView lvw lvwHeadings
MAPI メッセージ mpm mpmSentMessage
MAPI セッション mps mpsSession
MCI mci mciビデオ
メニュー mnu mnuFileOpen
月ビュー mvw mvwPeriod
MS チャート ch chSalesbyRegion
MS フレックス グリッド msg msgClients
MS タブ mst mstFirst
OLE コンテナ OLE OLE ワークシート
オプションボタン optoptGender
画像ボックス pic picVGA
ピクチャークリップ clp clpツールバー
ProgressBar prg prgLoadFile
リモート データ rd rdTitles
リッチテキストボックス rtf rtfレポート
形状 shp shpCircle
スライダー sld sldScale
スピン spn spnPages
ステータスバー sta staDateTime
SysInfo sys sysMonitor
TabStrip タブ tabOptions
テキスト ボックス txt txtLastName
タイマー tmr tmrAlarm
ツールバー tlb tlbActions
TreeView tre tre組織
UpDown upd updDirection
垂直スクロールバー vsb vsbRate
-------------------------------------------------- ----------------------------------
データ アクセス オブジェクト (DAO) の推奨プレフィックス
データ アクセス オブジェクトを示すには、次の接頭辞を使用します。
データベースオブジェクトのプレフィックスの例
コンテナ concon レポート
データベース データベース dbAccounts
DBEエンジン dbe dbeジェット
ドキュメント ドキュメント docSalesReport
フィールド fld fldAddress
グループグループ grpファイナンス
インデックス ix idxAge
パラメータ prm prmJobCode
QueryDef qry qrySalesByRegion
レコードセットrecrecForecast
関係 rel relEmployeeDept
TableDef 未定 未定Customers
ユーザー usr usrNew
ワークスペース wsp wspMine
-------------------------------------------------- ----------------------------------
アプリケーションでは多くのメニュー コントロールが頻繁に使用されるため、これらのコントロールに対して独自の命名規則を設定すると便利です。最初の「mnu」タグに加えて、メニュー コントロールのプレフィックスを展開する必要があります。ネストのレベルごとに追加のプレフィックスが追加され、名前文字列の最後に最終的なメニュー タイトルが配置されます。以下の表にいくつかの例を示します。
おすすめのメニュープレフィックス
メニュータイトルシーケンスメニューハンドラ名
ファイルを開く mnuFileOpen
ファイル送信メール mnuFileSendEmail
ファイル送信 FAX mnuFileSendFax
フォーマット文字 mnuFormatCharacter
ヘルプ コンテンツ mnuHelpContents
この命名規則を使用すると、特定のメニュー グループのすべてのメンバーが Visual Basic のプロパティ ウィンドウに順番に一覧表示されます。さらに、メニュー コントロール名は、それが属するメニュー項目を明確に示します。
他のコントロールの接頭辞を選択してください
上記にリストされていないコントロールは、一貫性を保つために、一意の 2 文字または 3 文字のプレフィックスを使用して標準化する必要があります。 3 文字を超える接頭辞は、説明が必要な場合にのみ使用してください。
定数および変数の命名規則
オブジェクトに加えて、定数と変数にも適切な形式の命名規則が必要です。このセクションでは、Visual Basic がサポートする定数と変数の推奨規則を示します。また、データの種類と範囲を識別する問題について説明します。
変数は常に可能な限り最小のスコープで定義する必要があります。グローバル (パブリック) 変数は、非常に複雑な状態構造をもたらし、アプリケーションのロジックを理解するのを非常に困難にする可能性があります。また、グローバル変数により、コードの再利用とメンテナンスがより困難になります。
Visual Basic の変数には次のスコープを設定できます。
スコープ宣言位置 可視位置
プロシージャレベルのプロシージャ、サブプロシージャ、またはそれが宣言されているプロシージャ内の関数プロシージャ内の 'Private'
モジュール レベルのフォームまたはコード モジュール (.frm、.bas) の宣言セクションの「プライベート」 フォームまたはコード モジュール内のすべてのプロシージャ
アプリケーション内のすべてのグローバル コード モジュール (.bas) の宣言セクションの「Public」
Visual Basic アプリケーションでは、フォーム間でデータを共有する他の便利な方法がない場合にのみグローバル変数を使用してください。グローバル変数を使用する必要がある場合は、それらを単一のモジュールで宣言し、関数ごとにグループ化します。このモジュールに、その役割を示す意味のある名前 (Public.bas など) を付けます。
コーディングの良い習慣は、できるだけモジュール化されたコードを書くことです。たとえば、アプリケーションでダイアログ ボックスを表示する場合、ダイアログ ボックスを完成させるために必要なすべてのコントロールとコードを 1 つのフォームに配置します。これは、アプリケーションのコードを有用なコンポーネントに編成し、実行時のオーバーヘッドを軽減するのに役立ちます。
グローバル変数 (渡すべきではない) を除いて、プロシージャと関数は、渡されたオブジェクト上でのみ動作する必要があります。プロシージャ内で使用されるグローバル変数は、プロシージャの最初の宣言セクションで識別する必要があります。さらに、渡されたパラメータ値を変更する必要があることが明らかでない限り、ByVal を使用してパラメータを Sub プロシージャおよび関数プロシージャに渡す必要があります。
プロジェクトのサイズが大きくなるにつれて、変数のスコープ設定の作業が急速に増加します。型プレフィックスの前に 1 文字の範囲プレフィックスを配置すると、この増加が示されますが、変数名の長さはそれほど増加しません。
変数スコープの接頭辞
範囲プレフィックスの例
グローバル gstr ユーザー名
モジュールレベル mmblnCalcInProgress
dblVelocity を使用せずにローカルで処理する
変数が標準モジュールまたはフォーム モジュールで Public として宣言されている場合、その変数はグローバル スコープを持ちます。変数が標準モジュールまたはフォーム モジュールでそれぞれ Private として宣言されている場合、その変数のスコープはモジュール レベルになります。
注: この手法を効果的に使用するには一貫性が重要です。Visual Basic の構文チェッカーは、「p」で始まるモジュール レベルの変数を検出しません。
絶え間ない
定数名の本体は大文字と小文字が混合され、各単語の最初の文字が大文字になります。標準の Visual Basic 定数にはデータ型と範囲の情報は含まれませんが、i、s、g、m などの接頭辞は定数の値と範囲を理解するのに役立ちます。定数名については、変数の場合と同じルールに従う必要があります。例えば:
mintUserListMax 'ユーザーリストの最大制限
'(整数値、モジュールに対してローカル)
gstrNewLine '改行文字
'(文字列、アプリケーションによってグローバルに使用されます)
変数
すべての変数を宣言すると、操作 (aUserNameTmp、sUserNameTmp、または sUserNameTemp など) の入力によって発生するエラーが少なくなるため、プログラミング時間が節約されます。 [オプション] ダイアログ ボックスの [エディター] タブで、 [変数宣言が必要] オプションをオンにします。 Option Explicit ステートメントでは、すべての変数が Visual Basic プログラムで宣言されている必要があります。
変数には、そのデータ型を示すプレフィックスを付ける必要があります。また、特に大規模なプログラムの場合、プレフィックスを拡張して変数のスコープを示すことができます。
変数のデータ型を示すには、次の接頭辞を使用します。
変数のデータ型
データ型プレフィックスの例
String (文字列型) str strFName
Integer (short integer 型) int intQuantity
Long (長整数型) lng lngDistance
Single(単精度浮動小数点数型) sng sngAverage
Double (倍精度浮動小数点型) dbl dblTolerance
Boolean (ブール型) bln blnFound
Byte (バイト型) byt bytRasterData
Date (日付型) dte dteNow
通貨(通貨計算および固定小数点計算タイプ) cur curRevenue
オブジェクト (オブジェクトタイプ) obj objCurrent
バリアント vnt vntCheckSum
変数名と手続き名を記述する
変数名またはプロシージャ名の本体は、大文字と小文字を混合して使用し、その目的を説明するのに十分な長さである必要があります。また、関数名は、InitNameArray や CloseDialog などの動詞で始まる必要があります。
頻繁に使用される用語や長い用語の場合は、名前の長さを合理化するために標準の略語を使用することをお勧めします。一般に、32 文字を超える変数名は VGA モニターでは読みにくくなります。
略語を使用する場合は、アプリケーション全体で一貫性があることを確認してください。プロジェクトで、しばらく Cnt を使用し、しばらく Count を使用すると、無用な混乱が生じます。
ユーザー定義型
多くのユーザー定義型を含む大規模なプロジェクトでは、多くの場合、各型に独自の 3 文字の接頭辞を与えることが必要になります。これらの接頭辞が「u」で始まる場合、ユーザー定義型を操作するときにこれらの型を簡単に識別できます。たとえば、ucli は、ユーザー定義のクライアント タイプ変数のプレフィックスとして使用できます。
[索引に戻る]
4. 単純な選択条件の場合は、IIf()関数を使用します。
ロッソのコード:
nNum = 0 の場合
sName = "サンシー"
それ以外
sName = "徐"
終了の場合
簡単なコード:
sName=IIf(nNum=0,"サンシー","シュー")
5. デバッグに Debug.Print を使用してみる
多くの初心者のデバッグでは、MsgBox は変数値を追跡するために使用されます。実際、Debug.Print は同じ効果を達成できるだけでなく、プログラムの最終コンパイル中に手動でコメントするか削除する必要があります。
一般的に:
メッセージボックスの名前
すべき:
Debug.Print nName
6. オブジェクトのプロパティを繰り返し変更する場合は、With....End With を使用するようにしてください。
一般的に:
フォーム1.高さ = 5000
フォーム1.幅 = 6000
Form1.Caption = "これは MyLabel です"
すべき:
Form1の場合
.高さ = 5000
.幅 = 6000
.Caption = "これは MyLabel です"
で終わる
この構造のプログラム実行効率は、特にループ文において比較的高いです。
7. プログラムをより標準化するために、MsgBox でメッセージ アイコンを使用するようにしてください。
一般的に言えば
vbInformation は、確認または正常な操作を促すために使用されるメッセージです。
vbExclamation は警告メッセージを表示するために使用されます。
vb危機的状況を促すために使用される重要なメッセージ
vbQuestion は質問を促すために使用されるメッセージです
[索引に戻る]
8. 可能な場合は列挙型を使用する
列挙の形式は次のとおりです。
[パブリック | プライベート] 列挙名
メンバー名 [= 定数式]
メンバー名 [= 定数式]
....
終了列挙型
Enum ステートメントには次の部分が含まれます。
部分的な説明
パブリック オプション。 Enum 型がプロジェクト全体で表示されることを示します。 Enum 型のデフォルトは Public です。
プライベート オプション。 Enum 型が宣言されたモジュール内でのみ表示されることを示します。
名前は必須です。この列挙型の名前。 name は、この Enum 型の変数またはパラメーターを定義するときに型を指定するために使用される、正当な Visual Basic 識別子である必要があります。
メンバー名は必須です。この Enum 型の構成要素の名前を指定する有効な Visual Basic 識別子。
定数式はオプションです。 (Long 型の) 要素の値。他の列挙型も可能です。 constantexpression が指定されていない場合、割り当てられる値は 0 (要素が最初のメンバー名の場合)、または直前の要素の値より 1 大きい値になります。
説明する
いわゆる列挙型変数は、Enum 型で定義された変数を指します。変数とパラメータの両方を Enum 型として定義できます。 Enum 型の要素は、Enum ステートメントで指定された定数値に初期化されます。割り当てられる値には正の数値と負の数値を含めることができ、実行時に変更することはできません。例えば:
Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum
Enum ステートメントはモジュール レベルでのみ使用できます。 Enum 型を定義した後、それを使用して、その型を返す変数、パラメーター、またはプロシージャを定義できます。 Enum 型をモジュール名で修飾することはできません。クラス モジュール内のパブリック Enum 型はクラスのメンバーではなく、単にタイプ ライブラリに書き込まれるだけです。標準モジュールで定義された列挙型は、タイプ ライブラリに書き込まれません。同じ名前空間を共有するため、標準モジュールとクラス モジュールの両方で同じ名前のパブリック Enum 型を定義することはできません。異なるタイプ ライブラリに同じ名前でメンバーが異なる 2 つの Enum 型がある場合、この型の変数への参照は、どちらのタイプ ライブラリの参照優先度が高いかによって異なります。
Enum 型を With ブロックのターゲットとして使用することはできません。
Enum ステートメントの例
次の例は、Enum ステートメントを使用して名前付き定数のコレクションを定義する方法を示しています。この場合、データベースのデータ入力フォームの設計に使用される選択可能な色定数がいくつかあります。
パブリック列挙型インターフェイスの色
icミスティローズ = &HE1E4FF&
icSlateGray = &H908070&
icドジャーブルー = &HFF901E&
icディープスカイブルー = &HFFFF00&
icSpringGreen = &H7FFF00&
icForestGreen = &H228B22&
icゴールデンロッド = &H20A5DA&
icFirebrick = &H2222B2&
終了列挙型
利点はプログラミングが高速化されることです