Excel VBA不会保持领先的零

时间:2014-07-10 21:37:04

标签: excel vba excel-vba

我似乎找不到在我的VBA代码中保存前导零的方法。零是必要的,因为它们对应于唯一ID。

我已尝试将数字格式更改为文本和0000 ....在excel中,并在我的实际代码中使用相同的方法:     ActiveSheet.Cells(i,j).NumberFormat =" 00000"

还有其他建议吗? (如果我手动将这些数字键入VBE,它也会删除前导零)。 编辑:

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 个答案:

答案 0 :(得分:10)

以下所有审议都是关于到一个单元格,而不是从中读取。更改Numberformat不起作用。 看看你是否可以弄清楚这段代码的工作原理:

dim v as integer
v = val(Sheets("Sheet1").Cells(2, 2))
dim cid as string
cid = format(v, "000")

你不应该以这种方式使用SelectActiveSheet,这是没有必要的;如果没有它应该引用的表单,就不要使用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位数字显示)

编辑:
如果失败了 - 虽然我无法解释 - 我仍然打赌'应该真的工作:
(不需要数字格式。)

Dim s As String
s = "0002"
Worksheets(1).Cells(1, "A").Value = "'" & s

答案 1 :(得分:0)

将格式设置为文本或" 00000"应该管用。下面的小片段给出了预期的结果。第一个存储值为0001,第二个存储值为1,格式化为0001。

如果单元格值存储在字符串变量中,这也适用。

Sub set_value()

Range("A1").NumberFormat = "@"
Range("A1").Value2 = "0001"

Range("B1").NumberFormat = "0000"
Range("B1").Value2 = "1"

End Sub