vba - Excel VBA : Error handling only works for one pass

标签 vba loops excel error-handling

我搜索了许多资源以尝试解决问题,但是没有成功。我是VBA的初学者,所以我的代码很有可能看起来很凌乱。为了问这个问题,我将尽量减少表格中的信息

我有两张纸,“数据”和“原始数字”。
数据包含标题为“属性”和“电话号码”的列,但是只有“属性”中包含数据。
原始号码包含相同的列,但是缺少一些“属性”值,因为它仅包含与这些属性关联的一定数量的电话号码。

数据表:
属性(property)。 。 。 。数
阿达街1号
阿达街2号
阿达街3号
阿达街4号
阿达街5号
阿达街6号

原始数据表:
属性(property)。 。 。 。数
阿达街1号。 。 。 。 12345678
2 Ada St。 。 。 。 12356322
5 Ada St。 。 。 。 12551122
6 Ada St。 。 。 。 12212112

我有一个代码可以自动将数字导入数据表,但是一旦达到3 Ada St,它就会返回错误(400),因为原始数字上没有3 AdaSt。我提供了一个错误处理程序,但是在再次返回错误之前它只能工作一次。
到目前为止,这是我的代码:

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函数位于其中,因为如果没有数字附加到该地址,我希望该单元格为空白。我尝试将其转换为错误处理程序的一部分,但是最终给了我一个错误。

有人请帮助我!如果您需要更多信息,我们将很乐意提供。我将不断关注这个话题!

最佳答案

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

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

未测试...

关于vba - Excel VBA : Error handling only works for one pass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16147579/

相关文章:

vba - 条件格式,虽然应用但没有出现格式

vba - 您能找到导致我的 Excel VB 脚本速度变慢的原因吗?

sql-server - MS Access 应用程序 - 将数据存储从 Access 转换为 SQL Server

python - 使用 pandas 进行高效的成对计算

javascript - 如何限制查询函数在循环时运行?

java - 在 While 循环中重复方法

excel - 如何将多个文本文件导入单个excel工作表的列

vba - 使用 vba 删除不同 Excel 工作簿中 Excel 工作表上的空白行

excel - 减少 Excel 中的单元格数量

excel - 在 VBA 中将工作表作为变量从一个子过程传递到另一个子过程