首页 > 解决方案 > 将 +2 添加到任何数字 (VBA)

问题描述

我正在编写一个 VBA 代码来将 +2 添加到放在函数中的任何数字字符串中。

它工作正常,直到它达到 6 和 7,然后它会中断。我真的不知道为什么会这样。

如果您想知道我为什么要这样做,这是加密算法的一部分,它专门用于加密字符串中的数字。

我的代码是:

Sub AddNumbers()

Dim Nos As String
Dim AddNo As String
Dim Found As Boolean
Dim Split()

Nos = "0-1-2-3-4-5-6-7-8-9-10"
Sheets("Sheet1").Range("U2").Value = Nos

Length = Len(Nos)
ReDim Split(Length)

For i = 1 To Length
    Found = False
    Split(i) = Mid(Nos, i, 1)
    For O = 48 To 55
        If Split(i) = Chr(O) Then
            Split(i) = Chr(O + 2)
            Found = True
            Exit For
        End If
    Next O
    If Split(i) = Chr(56) Then
        Split(i) = Chr(48)
    ElseIf Split(i) = Chr(57) Then
        Split(i) = Chr(49)
    End If
Next i

AddNo = Join(Split, "")

Sheets("Sheet1").Range("U3").Value = AddNo

End Sub

我真的很感激能了解它为什么在 6 点和 7 点中断。

标签: vbaexcel

解决方案


稍等一下,但你是加倍的。

看看你的循环。当您遇到 6 ( Char(54)) 时,您添加 2 并得到 8 ( Char(56))。

但是,在您的循环之后,您将再次测试相同的Split(i). 6 和 7 的字符现在相应地是 56 和 57 - 所以你再添加 2 到它们。

If Split(i) = Chr(56) And Found = False Then
    Split(i) = Chr(48)
ElseIf Split(i) = Chr(57) And Found = False Then
    Split(i) = Chr(49)
End If

推荐阅读