関西在住の達人養成塾受講生の方とのメールでちょっと出たやりとり。
セミナー本編では、DoLoopの使用例として、以下のようなサンプルを紹介している。
Sub CreateStringDigit()
Dim st As String
st = Range(“A2”).Value
Do While Len(st) < 10
st = “0” & st
Loop
Range(“B2”).Value = st
End Sub
10桁の文字列を作る場合だ。
上記のようなマクロで、「1234」からは、「0000001234」、
「123」からは、「0000000123」のような文字列を作ることができる。
これに関連して、その受講生の方からは、以下のようなメールをいただいた。
講義で数文字列に関して、左0詰めの話があったような気がしたのですが、それについて、職場で下記のように作ったことがあるのを思い出しました。
Dim strW As String
Dim lngW As Long
’10桁に揃える場合
strW = Right(“0000000000” & Cstr(lngW), 6)
興味深い。
あと、DoLoopの参考例でもなんでもないのだが、固定長の文字列型変数を宣言し、
以下のように処理する方法もある(マニアックだが)。
Sub Kotei()
Dim tgt As String * 10
Dim s As String
s = “4”
tgt = Left(Replace(tgt, vbNullChar, “0”), Len(tgt) – Len(s)) & s
Debug.Print tgt
End Sub
僕としては、汎用性のある知識を使い回せるほうが基本的には良いと思う。
ならば、やっばり最初紹介したような方法が最適か。