需要VBA对象|如何修复Excel VBA中的对象必需错误?
Excel VBA中必需的对象
错误是编码语言的重要组成部分,但真正的天才在于发现错误并修复这些错误。修复这些错误的第一步是找到原因的智能。如果您能找到为什么会出现这些错误,那么在不中断工作的情况下解决这些错误是一项非常容易的工作。 VBA编码中的此类错误之一是“需要对象”。
如果您在学习变量并为这些变量分配数据类型时还记得,我们也有“对象”数据类型。如果分配了对象数据类型,并且该对象在工作表或工作簿中不存在,则我们将收到VBA错误消息,如下所示: “所需对象”。因此,作为一种新的编码器,通常在这种情况下会出现恐慌状态,因为在入门级别,初学者无法找到此错误的原因。
为什么发生对象必需错误? (还有……如何解决?)
好的,它需要两个或三个示例才能真正理解为什么会发生此错误以及如何解决该错误。
您可以在此处下载此VBA对象必需的Excel模板– VBA对象必需的Excel模板例如,请看下面的代码。
代码:
Sub Last_Row()Dim Wb作为工作簿Dim Ws作为工作表Dim MyToday作为日期集Wb = ThisWorkbook Set Ws = ThisWorkbook.Worksheets(“ Data”)Set MyToday = Wb.Ws.Cells(1,1)MsgBox MyToday End Sub
让我为您解释以上代码。
我已经声明了三个变量,并且前两个变量引用了“工作簿”和“工作表”对象。第三个变量引用“日期”数据类型。
当将“对象”数据类型分配给变量时,我们需要使用单词“ Set”键将对象的引用分配给变量,因此在接下来的两行中,通过使用“ Set”关键字,我分配了将“ ThisWorkbook”引用到变量“ Wb”,因为该变量将对象数据类型保存为“ Workbook”,并且为变量“ Ws”在此工作簿中分配了“ Data”工作表的工作表对象。
设置Wb = ThisWorkbook
设置Ws = ThisWorkbook.Worksheets(“ Data”)
- 在“日期”数据类型变量的下一行中,我也使用“设置”关键字在此工作簿(Wb)和工作表“数据”(Ws)中分配单元格A1值的值。
设置MyToday = Wb.Ws.Cells(1,1)
- 在下一行中,我们在VBA的消息框中显示单元格A1值的“ MyDate”变量值的值。
MsgBox MyToday
- 好的,让我们运行这段代码,看看结果如何。
如您在上方看到的,它将VBA错误消息显示为 “所需对象”。好的,现在该检查为什么我们会收到此错误消息。
- 在上面的代码部分中的错误消息图像中,当显示错误消息时,它已用蓝色突出显示了代码的错误部分。
- 因此,问题仍然是为什么我们会收到此错误。我们需要看到的第一件事是这种特殊的变量数据类型。返回上一行代码,在该行中我们已将数据类型分配给了变量“ MyDate”。
- 我们已将变量数据类型分配为“日期”,然后现在返回到错误行。
在这一行中,我们使用了关键字“ Set”,而我们的数据类型不是“ Object”数据类型。因此,当VBA代码看到关键字“ Set”时,就假定它是对象数据类型,并说它需要对象引用。
因此,最底下的“ Set”关键字仅用于引用对象变量,如工作表,工作簿等。
范例#1
现在看下面的代码。
代码:
子对象Object_Required_Error()Range(“ A101”)。Value = Application1.WorksheetFunction.Sum(Range(“ A1:A100”))结束子对象
在上面的代码中,我们使用了工作表函数“ SUM”来获取从A1到A100的所有单元格值的总和。当您运行此代码时,我们将遇到以下错误。
糟糕!它显示“运行时错误'424”:必需的对象。
现在,让我们仔细看一下代码。
我们错误地使用了“ Application1”,而不是使用“ Application”,因此在VBA代码中遇到了“ Object Required”的错误。
如果启用了“ Option Explicit”一词,那么我们将收到“ Variable Not Defined”错误。
要记住的事情
- 必需对象表示对象数据类型引用需要准确。
- 如果在编码中未启用选项显式字,则对于拼写错误的可变字,我们将得到对象必需的错误;如果启用了选项显式,则对于拼错的可变字,我们将得到未定义的变量错误。