マクロでLen関数の使い方がわかりません。
マクロでLen関数の使い方がわかりません。
基幹システムのデーターベースをエクセル出力する機能があります。
その吐き出したエクセルファイルを使って
印刷したり、別のシステムにインポートしています。
このデーターの行数は吐き出すたび違います。
吐き出したエクセルのD列にあるデータですが
ここは必ず半角数字7桁固定長と決まっています。
7桁に満たないデータは0で埋めて7桁になっています。
基幹システム上でも7桁で表示されています。
例↓
0000002
0002222
0000000
ですがエクセルに吐き出されると桁数が変わってしまいます。
(なぜか0は空白にならず0と表示されています)
書式設定は[標準]でエラーマークが出ていて
(数値が文字列として保存されています)となっています。
例↓
2
2222
0
印刷時は後者、インポート時には前者である必要があるので
以下のようにE列は残したままF列に7桁表示を加えたいです。
E → F
--------------------------
1 2 → 0000002
2 1234567 → 1234567
3 333 → 0000333
4 22 → 0000022
5 4444 → 0004444
6 0 → 0000000
以下のマクロを作成しましたが動作しません。
Select Caseでという考え方がまずいのでしょうか?
(それ以前にLen関数の使い方もわかっていません。)
どうかよろしくお願いします。
Sub 七文字化()
行 = 2
Do
If Cells(行, 2).Value = "" Then Exit Do
n=Cells(行,2)
Select Case True
'6文字
Case Len(n) = 6
'先頭に0を追加
myStr = "0" & n
'5文字
Case Len(n) = 5
'先頭に0を追加
myStr = "00" & n
'4文字
Case Len(n) = 4
'先頭に0を追加
myStr = "000" & n
'3文字
Case Len(n) = 3
'先頭に0を追加
myStr = "0000" & n
'2文字
Case Len(n) = 2
'先頭に0を追加
myStr = "00000" & n
'1文字
Case Len(n) = 1
'先頭に0を追加
myStr = "000000" & n
'7文字ある時
Case Else
myStr = n
Cells(行, 3).Value = myStr
End Select
行 = 行 + 1
Loop
End Sub