首页 > 解决方案 > 如何通过vba清除Excel工作簿的内容

问题描述

我正在尝试使用主 wookbook 自动化数据。当我打开工作簿时,我希望出现一个消息框并清除其中一个工作表中表格中特定列的内容。我不断收到“应用程序定义或对象定义的错误”。这是我的“此工作簿”部分中的代码:

Option Explicit

Sub Workbook_Open()

Dim answer As Integer

answer = MsgBox("Do you want to clear the totals?", vbYesNo + vbQuestion, "Clear Totals")

If answer = vbYes Then

Call Sheet1.ClearContents_1

End If

End Sub

这是我的 Sheet1 代码:

Sub ClearContents_1()

Call Loop_Clear_C

Call Loop_Clear_M

Call Clear_S

End Sub

Sub Loop_Clear_C()

For i = 1 To Range("UserTable79").Rows.Count
    Range("UserTable79[Total]")(i) = 0
Next i
End Sub

Sub Loop_Clear_M()

For i = 1 To Range("ServiceTable79").Rows.Count
    Range("ServiceTable79[Total]")(i) = 0
Next i
End Sub

Sub Clear_S()

Range("TotalTable79[Actual Total]").ClearContents

End Sub

他们分开工作,但没有一起工作。消息框出现但不运行 Sheet1 代码。我如何调用此工作表代码?
编辑:Sheet1 代码也不再有效。

标签: excelvba

解决方案


当您引用的范围不存在时,通常会出现“应用程序定义的或对象定义的错误”消息。如果您单击 Sheet1 将其激活,然后尝试使用“立即”面板对您所指的范围执行操作(例如尝试输入Range("UserTable79").Select),您会收到错误吗?

从“ThisWorkbook”部分调用函数时显式指定工作表(例如,如果工作表名为“SheetName”,则指定Call ThisWorkbook.Sheets("SheetName").ClearContents_1而不是Call Sheet1.ClearContents_1)会有所帮助。

另外 - 请注意,您可以清除整个表格范围或整个列Loop_Clear_C,或者如果这更容易Loop_Clear_MClearContentsEntireColumn.ClearContents


推荐阅读