【问题标题】:Retaining leading zeros in Array output在数组输出中保留前导零
【发布时间】:2014-10-06 22:17:37
【问题描述】:

我是新手,如果我做错了,请道歉。

我在 Excel 中有一个 VBA 子程序,用于扩展值范围。

例如,111-113 变为 111、112、113。当我必须用前导零扩展值时,就会出现问题。我将它们全部作为 NumberFormat = "@" 并且预子数据确实显示了前导零。它们在处理过程中的某个地方丢失了,我怀疑这是我的变量类型的问题,但老实说我不知道​​。

我只粘贴下面代码的相关部分。任何帮助将不胜感激。

Dim ArrayData As Variant 
Dim ArrayOut As Variant
Dim X As Long
Dim D As Long
Dim Index As Long    
For D = ArrayData(X, 1) To ArrayData(X, 2)
    Index = Index + 1
    ArrayOut(Index, 2) = D

【问题讨论】:

  • 你正在使用 111-113 并创建 111, 112113 这让我相信你需要将 D 从低值到高值排序。将 D 保留为 long,但使用 Format(D, "000") 将基于文本的前导零值填充回 ArrayOut
  • @Mdh111 我已将您的问题退回到您最初提出的问题。如果你有一个新问题,你应该创建一个新问题,而不是完全改变原来的问题。
  • 好的,会的。谢谢大家!

标签: excel vba


【解决方案1】:

你试过将D的类型设置为String吗?

如果你真的要对它们做一些数字的事情,比如加/乘它们等,则只需要Long

如果数字有前导零,那么它们很可能不是真正的“数字”。

【讨论】:

  • 感谢您回复 LondonRob 和 @Soren Holten Hansen。我确实尝试将 D 更改为 String。我得到“编译错误:类型不匹配”。有什么想法吗?如果有帮助,我可以尝试粘贴更多代码。
  • 这对我来说听起来像是一个不同的问题。接受我们的任何一个答案并开始一个新问题,指定Type Mismatch 出现的哪里
【解决方案2】:

格式为@ 的单元格是字符串类型格式。因此,在将其转换为数字格式时,您将丢失任何尾随零(如果您的单元格包含数字以外的任何内容,则会出现错误)。

因此,您应该Dim D As String 以保留单元格中值的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-03
    • 2011-10-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多