2

我正在尝试编写一个 VBA 宏,该宏从活动单元格中获取一个字母并将其替换为前面五个位置的字母(即“a”变为“f”,“x”变为“c”)。这是为了解码所有字母都向后移动五个位置的加密文本文件。

到目前为止,我已经尝试使用字母的 ASCII 值并将该整数转换回字符,但这似乎不起作用(运行时错误 13),我不禁想知道是否有更有效的方法. 这是我到目前为止所拥有的:

Sub DECODER()
Worksheets("Sheet1").Activate

Dim What As String
What = ActiveCell.Value

Dim dCode As String
If What = "" Then
dCode = What
Else
dCode = Chr(Asc((What) + 5))
End If

ActiveCell.Value = dCode

End Sub
4

1 回答 1

1

没有 VBA:

在单元格A1中使用单个小写字母字符,在B1中输入:

=CHAR(IF(CODE(A1)>117,CODE(A1)-26,CODE(A1))+5)

在此处输入图像描述

使用 VBA:

Public Function DeCoder(Sin As String) As String
    Dim num As Long

    If Sin Like "[a-z]" Then
        num = Asc(Sin) + 5
        If num > 122 Then num = num - 26
        DeCoder = Chr(num)
    Else
        DeCoder = Sin
    End If
End Function
于 2016-10-06T18:49:23.493 回答