部品_値変換_文字列
ConvertToString
https://feelcodelab.com/vba_parts/converttostring/
・値(Variant)を、文字列(String)に変換して返す ・変換できない値は、False や空の値ではなく、原因を示すエラーで止まる(Err.Raise)
土台
取得
セル
・【最重要】変換の前に、VLOOKUP値取得の戻り値が、見つからない(#N/A)場合でないかを、呼び出し側が確認する
→ 確認の書き方:If IsError(v) Then MsgBox "見つかりませんでした": Exit Sub
・空白のセルの値(Empty)は、空文字("")に変換する
・日付(Date 型)は、"yyyy/mm/dd" の形の文字列にする(時刻があるときは "yyyy/mm/dd hh:nn:ss"、時刻だけのときは "hh:nn:ss")。
パソコンの地域設定に、結果が左右されないようにするため
・数値・True/False は、VBA の CStr と同じ結果の文字列にする(例:1.5 → "1.5")
・エラー値(#N/A など)・Null・オブジェクト・配列は、変換できない値として、エラーで止まる(1018)
・変換できない値は、原因を示すエラーで止まる(Err.Raise)。呼び出し側の起点で受けて、Err.Description を表示する
- 値が、変換できない(エラー値・Null・オブジェクト・配列)(vbObjectError + 1018)
・Offset / Find / Resize / With は禁止・他の部品を参照しない(土台) ・組み合わせ:VLOOKUP値取得 → 値変換_文字列 (VLOOKUP値取得の戻り値を、IsError で確認してから、この部品で変換する)
・特定のシートや表には、依存しない(値を受け取って、型を変換するだけ。VLOOKUP値取得などの戻り値(Variant)を想定している)
vValue : 変換する値(Variant)。VLOOKUP値取得の戻り値や、セルの値
String : 変換した値
String
Function 部品_値変換_文字列(ByVal vValue As Variant) As String
部品_値変換_文字列 = f_ConvertToString(vValue)
End Function
Function f_ConvertToString(ByVal vValue As Variant) As String
Dim s As String
f_ConvertToString = ""
If IsObject(vValue) Or IsArray(vValue) Then
Err.Raise vbObjectError + 1018, "f_ConvertToString", _
"値が、オブジェクトまたは配列のため、文字列に変換できません。"
End If
If IsError(vValue) Then
Err.Raise vbObjectError + 1018, "f_ConvertToString", _
"値が、エラー値(#N/A など)のため、文字列に変換できません" & _
"(VLOOKUP値取得の戻り値は、先に IsError で確認してください)。"
End If
If IsNull(vValue) Then
Err.Raise vbObjectError + 1018, "f_ConvertToString", _
"値が Null のため、文字列に変換できません。"
End If
If IsEmpty(vValue) Then Exit Function
If VarType(vValue) = vbDate Then
If CDbl(vValue) < 1 Then
s = Format(vValue, "hh:nn:ss")
ElseIf CDbl(vValue) = Int(CDbl(vValue)) Then
s = Format(vValue, "yyyy/mm/dd")
Else
s = Format(vValue, "yyyy/mm/dd hh:nn:ss")
End If
f_ConvertToString = s
Exit Function
End If
f_ConvertToString = CStr(vValue)
End Function◆VLOOKUP値取得の結果を変換する◆ Dim v As Variant Dim s As String v = 部品_VLOOKUP値取得(rng, "A-001", 3) If IsError(v) Then MsgBox "見つかりませんでした": Exit Sub '先に、見つからない場合を確認する s = 部品_値変換_文字列(v) ※ 変換できない値の場合は、原因を示すエラーで止まる(起点で On Error で受けて、Err.Description を表示する)
1.0
2026-10-29