VBA 在 excel 单元格中使用 "loop" 键入 19 位数字的代码,而不将其转换为“1.591E+17”之类的值?

VBA code to key in a 19 digit number using "loop" in a excel cell, without converting it into value like "1.591E+17"?

这是我的一段代码。

For i = 0 To Val(TextBox2.Value)    
var1 = TextBox1.Value + i 
ActiveCell.NumberFormat = "@" 
ActiveCell.Value2 = var1 
ActiveCell.Offset(1, 0).Activate 
Next i

我的输入是“159100000000000000”,我期望的是 - "X" 之后的数字。 我应该在

这样的单元格中获取值
159100000000000000
159100000000000001
159100000000000002
159100000000000003
.
.
.

甚至我试图在 运行 时间内将单元格的数字格式更改为 "Text"。仍然得到像

这样的值

'1.591E+17 '1.591E+17 '1.591E+17 '1.591E+17

有人可以帮我吗??

您不能将这些大小如此大的数字存储为数字,因为它们对于 Integer 来说太大而无法容纳,而且对于 Double 来说又太精确。这样做的唯一方法是增加最后几位数字并将前缀保留为字符串。

类似于(未测试):

Dim prefix As String
Dim startValue As Long
Dim endValue As Long

prefix = Left(TextBox1.Value, 12)
startValue = Val(Right(TextBox1.Value, 7))
endValue = startValue + Val(TextBox2.Value)

For i = startValue To endValue
    ActiveCell.Value2 = prefix & Format(i, "0000000")
    ActiveCell.Offset(1, 0).Activate
Next

这仅在文本始终为 19 位数字时有效,否则 prefixstartValueendValue 变量将需要相应调整。

您可以格式化 NumberFormat 并具体定义要格式化的位置数:

For i = 0 To Val(TextBox2.Value)    
var1 = TextBox1.Value + i 
ActiveCell.NumberFormat = "00000000000000000.0"
ActiveCell.Value2 = var1 
ActiveCell.Offset(1, 0).Activate 
Next i