Excel VBA:error handling仅适用于一次传递

我搜查了很多来源,试图解决我的问题,但是我没有成功。 我是VBA的初学者,所以我的代码很可能看起来很乱。 为了提出这个问题,我会尽量保持工作表中的信息最小化

我有两张表,'数据'和'原始数字'。
数据包含“财产”和“电话号码”栏,但只有“财产”有数据。
原始数字包含相同的列,但缺less一些“属性”值,因为它只包含与这些属性相关的一定数量的电话号码。

数据表:
属性。 。 。 。 数
1 Ada St
2 Ada St
3 Ada St
4 Ada St
5 Ada St
6 Ada St

原始编号表:
属性。 。 。 。 数
1 Ada St。 。 。 。 12345678
2 Ada St。 。 。 。 12356322
5 Ada St。 。 。 。 12551122
6 Ada St。 。 。 。 12212112

我有一个代码将数字自动导入数据表,但是一旦达到3 Ada St,它将返回一个错误(400),因为在原始数字上没有3个数字。 我包含一个error handling程序,但它只能在再次返回错误之前有效。
这是我的代码到目前为止:

Sub Button_Click() Worksheets("Data").Range("B4").Select 'B4 is the Number column in the data sheet Do While ActiveCell.Offset(0, -1) <> "" On Error GoTo ErrorHandler ActiveCell.Value = Application.WorksheetFunction.IfError(WorksheetFunction.VLookup(ActiveCell.Offset(0, -1), ThisWorkbook.Worksheets("Raw Numbers").Range("Numbers"), 2, False), "") ErrorHandler: ActiveCell.Offset(1, 0).Select Loop End Sub 

我这样写代码,因为我最初是用函数而不是代码工作的,不过那太乱了。 IfError函数在那里,因为我想单元格是空白如果没有号码附加到地址。 我试图将其转换为error handling程序的一部分,但它只是给了我一个错误。

有人请帮助我! 如果您需要更多的信息,我会很乐意提供。 我会不断地看着这个线程!

在代码中使用公式,然后粘贴值。

 ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Numbers,2,FALSE),"""")" ActiveCell.Value = ActiveCell.Value 

未经testing…

function不应太杂乱。 IFERRORVLOOKUP组合应该可以工作。

公式看起来像这样:

 =IFERROR(VLOOKUP(A2,RawData!A:B,2,FALSE),"") 

在VBA中,我会编写这样的代码:

 Option Explicit Sub test() Dim Result On Error Resume Next Result = Application.WorksheetFunction.VLookup([A3], [RawData!A:B], 2, False) If Err.Number = 1004 Then ' data not found, or some other formula error Result = "" Else MsgBox Err.Number & "-" & Err.Description Exit Sub End If [B3] = Result End Sub