Excel VBA не будет держать ведущие нули
Я не могу найти способ сохранить ведущие нули в моем коде VBA. Нули необходимы, поскольку они соответствуют уникальным идентификаторам.
Я попытался изменить формат чисел на text и 0000.... в excel и тот же подход в моем фактическом коде: Параметру activesheet.Ячейки (i, j).NumberFormat = "00000"
какие-то другие предложения? (Если я вручную набираю эти числа в VBE, он также удаляет ведущие нули). EDIT:
Sheets.Add.Name = "Temp"
Sheets("Sheet1").Select
ActiveSheet.Cells(2, 2).NumberFormat = "000"
cid = Cells(2, 2)
MsgBox cid
Sheets("Sheet2").Select
ActiveSheet.Cells(6, 1).NumberFormat = "00000"
sid = Cells(6, 1)
Sheets("Temp").Select
Url = _
"URL;" & _
"http......asp?" & _
"X1=" & cid & "&" & _
"X2=" & sid & "&"
Это внутри цикла в конечном счете, но я отлаживаю как отдельные итерации.
2 ответов
все дискуссии были о писать в ячейку, не считывая с нее. Изменение Numberformat не работает таким образом. Посмотрите, можете ли вы понять, как работает этот код:
dim v as integer
v = val(Sheets("Sheet1").Cells(2, 2))
dim cid as string
cid = format(v, "000")
вы никогда не должны использовать Select
и ActiveSheet
таким образом, это не обязательно; и никогда не используйте Cells
без листа, на который он должен ссылаться.
(Val
можно опустить, если ячейка действительно уже числовая, а не текстовая).
ранее ответ... :
этот код отлично работает для меня
Worksheets(1).Columns("A").NumberFormat = "@"
Worksheets(1).Cells(1, "A").Value = "00023"
и
Worksheets(1).Columns("A").NumberFormat = "000000"
Worksheets(1).Cells(1, "A").Value = "0023"
(здесь строка преобразуется в число и отображается 6 цифр)
EDIT:
Если это не удастся - хотя я не мог этого объяснить - я все равно держу пари, что '
должны действительно работы:
(Не требуется numberformat.)
Dim s As String
s = "0002"
Worksheets(1).Cells(1, "A").Value = "'" & s
установка формата в текст или "00000" должна работать. Небольшой фрагмент ниже дает ожидаемые результаты. С первым хранением значения 0001 и вторым хранением значения 1, которое отформатировано так, чтобы выглядеть как 0001.
Это также работает, если значение ячейки хранится в строковой переменной.
Sub set_value()
Range("A1").NumberFormat = "@"
Range("A1").Value2 = "0001"
Range("B1").NumberFormat = "0000"
Range("B1").Value2 = "1"
End Sub