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

Excel中VBA中使用表替换的简单密码,vba,excel,Vba,Excel,我想在Excel中编写一个简单的密码,从一个单元格中提取一个文本,用相邻列中的一个数字替换每个字母,然后将输出放入另一个单元格中。无法让VLOOKUP工作-它作为一个公式工作,但不知何故无法让它在VBA代码中工作。首先尝试对一个字符执行一个简单的过程(稍后添加循环会很容易),但不起作用。它可以编译,但当我运行它(按下我分配给它的按钮)时,结果单元格中会出现“#N/a” Sub Zakoduj() Dim Literka As String Dim Liczba As Variant Dim C

我想在Excel中编写一个简单的密码,从一个单元格中提取一个文本,用相邻列中的一个数字替换每个字母,然后将输出放入另一个单元格中。无法让VLOOKUP工作-它作为一个公式工作,但不知何故无法让它在VBA代码中工作。首先尝试对一个字符执行一个简单的过程(稍后添加循环会很容易),但不起作用。它可以编译,但当我运行它(按下我分配给它的按钮)时,结果单元格中会出现“#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中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

Application.worksheetfunction.VLookup
在VLookup之前和之后,您是否已经完成了步骤,尝试删除错误陷阱到,我认为该函数可能会失败,而不是返回n/a?您的列不是回到前面了吗?您当前的
VLookup
正在您名为
Kod
的列中查找从
工作表(“Sheet2”).Range(“B2”).value
中获得的值,但听起来好像您想从名为
Litera
的列中查找,因此您可能需要切换这些列。(您还将返回第一列中的值,因此,如果出现匹配,您将返回与查找的值相同的值-您可能希望将
列设置为
2
)您也可以尝试,因为它们确实经过了优化。这些示例设置了replace函数来替换您的密码,以寻求帮助。但是,它仍然不起作用。。。调用VLookup后,“Liczba”不会从“未找到值”更改。我不知道为什么,因为一切都是正确的-范围等好的,明白了!Vlookup只查找第一列!VLookup查找指定范围的第一列,并从ColumnToTake指定的下一列中获取值。如果将ColumntToTake设置为1,则将获得与输入相同的输出。