Я хотел бы записать некоторые строковые коды в ячейки Excel, ниже приведен пример сценария:
Sub Write2DigitCode()
Dim aryCode(), i As Long
aryCode = Array("1B", "1A", "10", "42", "03", "04", "1N", "1P", "1J", "02", "07")
With ActiveSheet.[A1]
.Value = "with_format_func"
.Offset(, 1).Value = "expected"
For i = LBound(aryCode) To UBound(aryCode)
.Offset(i + 1).NumberFormat = "@"
.Offset(i + 1, 1).NumberFormat = "@"
'**** method 1: user Format function directly
.Offset(i + 1).Value = Format(aryCode(i), "00")
'**** method 2: use IsNumeric to distinguish code without digits
If IsNumeric(aryCode(i)) Then
.Offset(i + 1, 1).Value = Format(aryCode(i), "00")
Else
.Offset(i + 1, 1).Value = aryCode(i)
End If
Next
End With
Erase aryCode
End Sub
Method 2
получил то, что мне нужно, Method 1
получил два неожиданных значения с «1A», «1P»:
with_format_func expected
1B 1B
00 1A
10 10
42 42
03 03
04 04
1N 1N
01 1P
1J 1J
02 02
07 07
введите описание изображения здесь
Результат означает Format("1A", "00") = "00"
и Format("1P", "00") = "01"
. В этом нет смысла.
Не должен возвращаться, когда код содержит буквы? Будем признательны за любые комментарии или ответы.