我已经完成了关于此事的大部分问题,但似乎无法使用我的代码运行。
目标:我有3个功能:main,fun1和clear。这三个都需要使用数据链接作为工作表类型。它们都位于同一工作簿的同一模块中。我在" ThisWorkbook"
中设置了Workbook_Open问题:我得到了运行时错误' 424'" datalink.Cells(1,10)所需的对象.Value = 0"线
代码:
'this is how I am setting up my global variable
Public datalink As Worksheet
Sub Workbook_Open()
Set datalink = ActiveWorkbook.Worksheets("Sheet1")
End Sub
'deletes all sheets except Sheet1
Sub Clear()
For Each Sheet In Sheets
Application.DisplayAlerts = False
If Sheet.Name <> "Sheet1" Then Sheet.Delete
Next Sheet
datalink.Cells(1, 10).Value = 0
Application.DisplayAlerts = True
'Sheet1.Columns(10).ClearContents
End Sub
编辑:
我已将上面的代码编辑为我目前使用的代码。我粘贴了过时的代码。我很抱歉,我应该清楚我正试图阻止更改我模块中的所有&#34; Sheet1&#34;所以我决定将它们称为数据链接,这样我就可以改变什么&#34;数据链&#34;将等于影响所有模块的值。基本上,我正在尝试这样做,所以当我改变&#34; Sheet1&#34;时,我不必在每个文档中复制粘贴以下代码。进入其他名称
Dim datalink As Worksheet
Set datalink = Sheets("Sheet1") 'master sheet that contains PI data from datalink
答案 0 :(得分:1)
首先放置一行:
Public datalink As Worksheet
作为标准模块的第一行
,然后强>
Sub Clear()
For Each Sheet In Sheets
Application.DisplayAlerts = False
If Sheet.Name <> "Sheet1" Then Sheet.Delete
Next Sheet
datalink.Cells(1, 10).Value = 0
Application.DisplayAlerts = True
datalink.Columns(10).ClearContents
End Sub
答案 1 :(得分:0)
不确定这是否是确切的问题但是'Clear'函数假设ActiveSheet是Sheet1。如果ActiveSheet不是Sheet1并且您尝试“清除”,则Sheet1将被删除,因此数据链接将指向实际上不存在的工作表。
尝试将代码更改为:
If Sheet.Name <> datalink.Name Then Sheet.Delete
甚至更好,不要使用Workbook_Open功能。在这种情况下没有必要。使用对象Sheet1(就像在注释掉的代码中一样):
If Sheet.Name <> Sheet1.Name Then Sheet.Delete
Sheet1也可以在任何地方访问。