デバッグに役立つ手法を紹介します。
Option Explicit'通常は"on"の状態の時にログの書き込みを行う。
'ログの書き込みを停止する場合 "off" にする。
Private Const OutputSw = "on"'--------------------------------
' Error_OutputLog プロシージャ
'--------------------------------
Public Sub Error_OutputLog(Keyword As String)Dim NewX As Long 'エラーログファイルの使用可能なファイル番号
Dim LogFile As String 'エラーログファイルのフルパス
'offの場合、ログの書き込みを抑制する
If OutputSw = "off" Then Exit Sub
NewX = FreeFile
LogFile = App.Path
'末尾に¥が付いていなかったら付ける
If Right$(LogFile, 1) <> "¥" Then
LogFile = LogFile & "¥"
End If
'ログファイルの設定
LogFile = LogFile & "Error.log"
'ログファイルが存在しない場合、空のファイルを作成
If FileExists(LogFile) = False Then
Open LogFile For Append As #NewX
Close #NewX
End If
'ログファイルのサイズが300KB以上のときは一旦削除する。
If FileLen(LogFile) > 300000 Then
Kill LogFile
End If
Open LogFile For Append As #NewX
'各プロシージャのエラーハンドラをトレースする。
Print #NewX, "エラー フォーム名またはプロシージャ名 = " & Keyword & " でエラーが発生しています。"
Print #NewX, "エラー 発生日時 = " & Format$(Now, "yyyy/mm/dd") & " " & Time
Print #NewX, "エラー 概要(Description) = " & Err.Description
Print #NewX, "エラー 番号(Number) = " & str(Err.Number)
Print #NewX, "エラー (Source) = " & Err.Source & vbCrLf
Close #NewX
End Sub
On Error GoTo <ラベル>
ラベルは任意の文字列を指定してください。
Exit Sub
<ラベル>:
Call Error_OutputLog("キーワード")
Err.Clear
<ラベル>以下の部分をエラーハンドラと言いますが、そのエラーハンドラの前には必ずExit Subを入れてください。
でないと、毎回エラーハンドラ部分を実行してしまいます。
キーワードは、任意の文字列で例えばForm_Load等プロシージャ名をいれておくと良いでしょう。
これで、エラーが出た場合、実行ファイルと同じフォルダにError.logというファイルを作成し、エラー情報が書き込まれている事でしょう。そのエラー情報をメモ帳などで見る事でどこでエラーが起きたかが分かりデバッグしやすくなるでしょう。
通常、Windowsを日本語で使用している場合は頭に¥記号を付加し1000単位の区切り記号も付きます。
使用例:
Dim strPrice As String
Dim lngPrice As Long
lngPrice=19800
strPrice=Format(lngPrice,"Currency")
上記のようにするとstrPriceには ¥19,800 という結果が返ります。
整数部を最低 1 桁、小数部を最低 2 桁表示する形式で返します。1000 単位の区切り記号は付きません。
使用例:
Dim MyStr As String
MyStr=19800.3256
MyStr=Format(MyStr,"Fixed")
上記のようにするとMyStrには
19800.32 という結果が返ります。
整数部を最低 1 桁、小数部を最低 2 桁表示する形式で返します。
1000 単位の区切り記号が付きます。
使用例:
Dim MyStr As String
MyStr=19800.3256
MyStr=Format(MyStr,"Standard")
上記のようにするとMyStrには19,800.32という結果が返ります。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="アプリケーションの名前"
type="win32"
/>
<description>アプリケーションの説明</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>