使用表替换的Excel中的VBA中的简单密码

时间:2017-09-28 11:03:05

标签: excel vba excel-vba

我想在Excel中编写一个简单的密码,它将从单元格中取出文本,将每个字母替换为相邻列中的数字,然后将输出放在另一个单元格中。无法使VLOOKUP工作 - 它可以作为一个公式,但不知何故不能让它在VBA代码中工作。试图先做一个简单的程序,为一个字符执行此操作(稍后添加一个循环很容易),但它不起作用。它编译,但是当我运行它时(按下我指定的按钮)我得到了#34;#N / A"在结果单元格中。

Sub Zakoduj()

Dim Literka As String
Dim Liczba As Variant
Dim ColumnToTake As Integer

ColumnToTake = 1 ' Liczby

On Error Resume Next
Err.Clear

Literka = Sheets("Sheet2").Range("B2").Value

Liczba = Application.VLookup(Literka, Sheets("Sheet1").Range("A5:B39"), ColumnToTake, False)

If Err.Number = 0 Then
    Sheet2.Range("B6").Value = Liczba
Else
    Sheet2.Range("B6").Value = Err.Number
End If

End Sub

范围包含数字和字符,如下所示:

Kod Litera
16  A
73  B
12  C
40  D
70  E
etc. etc.

无法找到解释如何执行此操作的教程......

1 个答案:

答案 0 :(得分:1)

这是修改后的版本。请注意,值在纸张1的A1:B6

Option Explicit

Sub Zakoduj()
    Dim Literka As Integer
    Dim Liczba As String
    Dim ColumnToTake As Integer

    ColumnToTake = 2    ' Liczby
    Literka = Sheets("Sheet2").Range("B2").Value
    Liczba = "Value not found"  'If value is not found

    On Error Resume Next
    Liczba = Application.WorksheetFunction.VLookup(Literka, Sheets("Sheet1").Range("A1:B6"), ColumnToTake, False)
    On Error GoTo 0    'Always reset error handling after On Error Resume Next

    Sheet2.Range("B6").Value = Liczba
End Sub