【发布时间】:2018-09-26 06:47:11
【问题描述】:
那里。我编写了这段代码,用两个数字替换了一个字符(例如 0 = 10; 1 = 11; 2 = 12; ...),除了第一个元素(零元素)之外一切正常。因此,如果我将“010a4”字符串放在单元格 A1 上并使用我的公式“=GENERATECODE(A1)”,我的预期返回值为“1011102014”,但我有一个“110111102014”字符串。所以,只有零值会发生这个错误,我不知道为什么。有什么想法吗?
我的代码:
Function GENERATECODE(Code As String)
Dim A As String
Dim B As String
Dim i As Integer
Const AccChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Const RegChars = "1011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071"
For i = 1 To Len(AccChars)
A = Mid(AccChars, i, 1)
B = Mid(RegChars, 2 * i - 1, 2)
Code = Replace(Code, A, B)
Next
GENERATECODE = Code
End Function
【问题讨论】:
-
您的问题是您的代码首先将每个
0更改为10,然后将每个1更改为11。所以每个0给你10然后110。 -
正如文森特指出的那样,您将 char 替换为 char,因此在将 0 替换为 10 之后,您将在相同的输入上再次替换。一个解决方案是从一个空字符串开始,并在循环中构建它,使用
&