0

我正在通过添加字符的 ASCII 来开发数据屏蔽工具,但是一旦达到最大 ASCII 数就会出错。

如果 ASCII 数字已经达到最大 ASCII 数字,有什么方法可以阻止或忽略它的添加?

我的excel代码

Sub DataMask()
Dim rngCell As Range
Dim intChar As Integer
Dim strCheckString As String
Dim strCheckChar As String
Dim intCheckChar As Integer
Dim strClean As String

For Each rngCell In Selection
    strCheckString = rngCell.Value
    strClean = ""
    intChar = 1
    If strCheckString <> "" Then
        For intChar = 1 To Len(strCheckString)
           strCheckChar = Mid(strCheckString, intChar, 1)
           intCheckChar = Asc(strCheckChar) + 68
           strClean = strClean & Chr(intCheckChar)
        Next intChar
        rngCell.Value = strClean
    End If
Next rngCell
End Sub
4

1 回答 1

1

您可以包含这样的一段代码:-

       If intCheckChar <= 255 Then
            newCheckChar = Chr(intCheckChar)
       Else
            newCheckChar = strCheckChar
       End If
       strClean = strClean & newCheckChar

取代

       strClean = strClean & Chr(intCheckChar)

因此,如果新字符的代码超过 255,它只会使用旧字符。

这是带有几个调试语句的整个子:-

sub DataMask()
Dim rngCell As Range
Dim intChar As Integer
Dim strCheckString As String
Dim strCheckChar As String
Dim intCheckChar As Integer
Dim strClean As String
Dim newCheckChar As String


For Each rngCell In Selection
    strCheckString = rngCell.Value
    strClean = ""
    intChar = 1
    If strCheckString <> "" Then
        For intChar = 1 To Len(strCheckString)
           strCheckChar = Mid(strCheckString, intChar, 1)
           intCheckChar = Asc(strCheckChar) + 68
           ' New code
           If intCheckChar <= 255 Then
                newCheckChar = Chr(intCheckChar)
            Else
                newCheckChar = strCheckChar
            End If
           strClean = strClean & newCheckChar
           Debug.Print ("intChar=" & intChar)
           Debug.Print ("intCheckChar=" & intCheckChar)
           ' end of code
        Next intChar
        rngCell.Value = strClean
    End If
Next rngCell
End Sub
于 2016-07-18T08:46:16.247 回答