满足格式预设值的条件

时间:2017-01-18 00:55:32

标签: excel vba excel-vba

我以前的VBA代码是这样的

field9 = 00 & Format(Date, "YYYYMM") & CleanString(myVal) & _
         Format(Cells(vRow, 8).Value, "00000")

此field9变量将用于在字段中转换我的Excel数据 从000000000000006(预设值)到02017010100006(来自我在字段9中设置的内容)。 CleanString(myVal)我用来从其他模块传递自动生成序列号。

目前我需要修改这个东西以满足我的新要求 002017010000006(预设值)到002017010100006。我需要保持预设值,因为我将无法使用当前代码,因为它将有更多数字。我需要帮助。

我将进一步解释问题所在。 第一部分是我的变量要做的事情

000000000000006(pulled this from text file) to 002017010100006(vba code processed)

" 00"" 201701"" 01"" 00006"
   1.在我的代码中预设00    2. 201701是YYYYMM
   3. myval是我的运行顺序号01-99
   4.我将我的单元格格式化为00000,如果这个字段有1,那么它就是    00001 5.我可以使用我目前的公式

来做到这一点

现在的问题是

002017010000006(pulled this from text file) to 002017010100006(vba code processed) 

1。此002017010000006也来自文本文件 2.如果我打算使用我目前的公式,我会遇到这类问题    因为它将超过15位数字00201701012017010013676

我需要维持" 201701"来自我的文本文件,而不是使用当前解决方案中的Format(Date, "YYYYMM")

这是我需要002017010100006只需15位数的结果

p / s:我已经编辑了我的信息以便进一步理解,因为我还没有解决我的问题,而且这里也有一些错误的信息。我很抱歉给您带来不便

提前谢谢。

1 个答案:

答案 0 :(得分:1)

试试这个:

Function Transform(initial As String) As String
    Transform = Left(initial, 8) & CleanString(myVal) & Format(Cells(vRow, 8).Value, "00000")
End Function

或简单地将其分配给变量......

newString = Left(oldString, 8) & CleanString(myVal) & Format(Cells(vRow, 8).Value, "00000")

请注意,您的CleanString(myVal)必须是长度为2的字符串。如果任何长度,则仍需要进行一些修改(即使用3位数值,最终数字将是16位数字)

因此,如果您想允许CleanString超过两位数,请执行此操作以保持15位数字长度:

    Dim s As String: s = CleanString(myVal)
    newString= Left(oldString, 8) & s & Format(Cells(vRow, 8).Value, String(7 - Len(s), "0"))