Маскировка данных макроса Excel путем изменения символа ASCII

excel macros data-masking

215 просмотра

1 ответ

15 Репутация автора

Я работаю над инструментами маскирования данных, добавляя символы 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
Автор: Silverchain Источник Размещён: 18.07.2016 02:47

Ответы (1)


1 плюс

15378 Репутация автора

Решение

Вы можете включить кусок кода, как это:

       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
Автор: Tom Sharpe Размещён: 18.07.2016 08:46
Вопросы из категории :
32x32