在Excel VBA中更改活动单元格的字符值

时间:2016-10-06 18:31:08

标签: excel vba string-decoding

我正在尝试编写一个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

1 个答案:

答案 0 :(得分:1)

没有VBA:

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

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

enter image description here

使用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