我以前的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:我已经编辑了我的信息以便进一步理解,因为我还没有解决我的问题,而且这里也有一些错误的信息。我很抱歉给您带来不便
提前谢谢。
答案 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"))