VB6・VBAメモ:指定文字埋め(16進数の0埋め,半角スペース埋め等)

時々「16進数の0埋め」や「半角スペース埋め」等がしたいことがあります。
Format関数だけではこれを実現できないため、指定文字埋めの方法についてメモしておきます。

まず、以下はFormat関数を使った場合ですが…
数値に対して0埋めはできるようですが、文字に対して0埋めはできないようです。

説明 記述例 出力
数値の0埋め
Format(123, "00000")
00123
Format(123, String(5, "0"))
00123
Format関数では16進数の0埋めはできない
Format(Hex(123), String(5, "0"))
7B
Format関数では半角スペース埋めはできない
Format(123, String(5, " "))
     


指定文字埋めを行うにはRight関数を使用するのが簡単かと思います。
例えば「ABC」を5桁0埋めしたい場合、「00000ABC」のように頭に5個0を付与し、Right関数で右側の5文字を取得します。
これだけで「00ABC」が出てきます。簡単ですね。

以下は指定文字埋めのサンプルになります。


説明 記述例 出力
指定文字埋め関数
'機能:指定文字埋め関数
'引数:str :変換前の文字列
'   chr  :埋める文字(1文字目のみ使用)
'   digit:桁数
'戻値:指定文字埋め後の文字列
Function FormatDigit(ByVal str As String, _
                     ByVal char As String, _
                     ByVal digit As Long) As String
  Dim tmp As String
  tmp = str
  If Len(str) < digit AND Len(char) > 0 Then
    tmp = Right(String(digit, char) & str, digit)
  End If
  FormatDigit = tmp
End Function

5桁半角スペース埋め
FormatDigit("1C", " ", 5)
   1C
5桁A埋め
FormatDigit("1C", "A", 5)
AAA1C
5桁0埋め
FormatDigit("12", "0", 5)
00012


コメント
コメントする








    
この記事のトラックバックURL
トラックバック