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 位数字时有效,否则 prefix
、startValue
和 endValue
变量将需要相应调整。
您可以格式化 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
这是我的一段代码。
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 位数字时有效,否则 prefix
、startValue
和 endValue
变量将需要相应调整。
您可以格式化 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