我有一本工作簿,当我打开时,我的一个宏不起作用。如果我进入编辑器并尝试重新编译代码,我会得到
错误430类不支持自动化或不支持预期的接口
在此代码行上:
If Sheets("sheet1").Range("myRange").Cells(1,1) = 1 Then
Sheets("mysheet").Move before:=Sheets("other sheet") **<<<-- ERROR HERE**
If Sheets("mysheet (1)").Range("DA1").Value > 0 Then
Dim n as long
For n = 2 to Sheets("mysheet (1)").Range("DA1").Value + 1
Sheets("mysheet (" & n & ")").Move before:=Sheets("other sheet")
Next n
End If
End If
答案 0 :(得分:0)
那种单线的飞机一次要做太多事情,很难正确诊断问题。
首先声明Worksheet
变量,以便您有一个早期绑定的接口可以让您的成员致电-请注意,我在这里假设ActiveWorkbook
符合条件,这应该是等同于您的隐式限定Sheets
调用:
Dim mySheet As Worksheet
Set mySheet = ActiveWorkbook.Worksheets("mySheet")
Dim otherSheet As Worksheet
Set otherSheet = ActiveWorkbook.Worksheets("other sheet")
mySheet.Move Before:=otherSheet
如果您的代码进入.Move
方法调用,则它应该“正常工作”。如果在此之前炸毁,请验证:
ActiveWorkbook
如果所有这些表都在编译时存在于ThisWorkbook
(包含VBA项目的工作簿)中,则您不需要任何变量-您已经有了它们。
查看 Project Explorer (Ctrl + R),所有图纸模块都有两个名称。括号中的一个是Name
属性;前一个是CodeName
,您可以在(Name)
下的属性(F4)工具窗口中找到它。将其更改为例如mySheet
,现在标识符mySheet
可以在此VBA项目中的任何地方用于引用该特定工作表-不管其“标签名”是什么。