Excel 运行时错误的类型
下面的代码给出了此错误:Excel 运行时错误的类型,excel,runtime-error,vba,Excel,Runtime Error,Vba,下面的代码给出了此错误: 类不支持自动化或不支持预期接口 谁能解释一下我为什么会犯这个错误 Sub typeofcheck() Dim wks As New Worksheet If TypeOf wks Is Worksheet Then MsgBox "This is Worksheet" Else MsgBox "This is not" End If End Sub 不确定是否可以解释,但我认为可以通过初始化变量wks来修复代码 Sub typeofcheck() D
类不支持自动化或不支持预期接口
谁能解释一下我为什么会犯这个错误
Sub typeofcheck()
Dim wks As New Worksheet
If TypeOf wks Is Worksheet Then
MsgBox "This is Worksheet"
Else
MsgBox "This is not"
End If
End Sub
不确定是否可以解释,但我认为可以通过初始化变量wks来修复代码
Sub typeofcheck()
Dim wks As New Worksheet
Set wks = Sheets("someFunnySheetName")
If TypeOf wks Is Worksheet Then
MsgBox "This is Worksheet"
Else
MsgBox "This is not"
End If
End Sub
问题是,使用DIM
只需分配一些内存,而使用Set
则需要设置数据类型。但是VBA是一种迷雾。有一次我试图阅读MSDN文档中的内容,结果比地狱还糟糕
edit1:我做了一些进一步的测试,你提到的这个不错的错误消息听起来非常专业,但是如果你调试代码,并将鼠标悬停在wks变量上,它会告诉你
wks=
,这更容易阅读。所以,为了将来,尝试调试,并悬停您的变量。如果你不知道该怎么做,试着设置一些Set
s:)VBA是关于魔法的不确定是否可以解释,但我认为你可以通过初始化变量wks来修复你的代码
Sub typeofcheck()
Dim wks As New Worksheet
Set wks = Sheets("someFunnySheetName")
If TypeOf wks Is Worksheet Then
MsgBox "This is Worksheet"
Else
MsgBox "This is not"
End If
End Sub
问题是,使用DIM
只需分配一些内存,而使用Set
则需要设置数据类型。但是VBA是一种迷雾。有一次我试图阅读MSDN文档中的内容,结果比地狱还糟糕
edit1:我做了一些进一步的测试,你提到的这个不错的错误消息听起来非常专业,但是如果你调试代码,并将鼠标悬停在wks变量上,它会告诉你
wks=
,这更容易阅读。所以,为了将来,尝试调试,并悬停您的变量。如果你不知道该怎么做,试着设置一些s:)VBA是关于魔法的问题在于作为新的
当然,您不能直接创建工作表的新实例;您必须调用Sheets
集合中的Add
方法,例如:
Public Sub typeofcheck()
Dim wks As Worksheet
Set wks = ActiveWorkbook.Sheets.Add
If TypeOf wks Is Worksheet Then
MsgBox "This is Worksheet"
Else
MsgBox "This is not"
End If
End Sub
问题出在新的中
当然,您不能直接创建工作表的新实例;您必须调用Sheets
集合中的Add
方法,例如:
Public Sub typeofcheck()
Dim wks As Worksheet
Set wks = ActiveWorkbook.Sheets.Add
If TypeOf wks Is Worksheet Then
MsgBox "This is Worksheet"
Else
MsgBox "This is not"
End If
End Sub
该错误是由于尝试访问而导致的
做你想做的事的正确方法是:
Sub typeofcheck()
Dim wks As Worksheet
Set wks = Worksheets.Add
Debug.Print TypeOf wks Is Worksheet
If TypeOf wks Is Worksheet Then
MsgBox "This is Worksheet"
Else
MsgBox "This is not"
End If
End Sub
该错误是由于尝试访问而导致的
做你想做的事的正确方法是:
Sub typeofcheck()
Dim wks As Worksheet
Set wks = Worksheets.Add
Debug.Print TypeOf wks Is Worksheet
If TypeOf wks Is Worksheet Then
MsgBox "This is Worksheet"
Else
MsgBox "This is not"
End If
End Sub
@如果使用dim,则声明变量,如果使用set,则将对象激活,则使用set语句将内存分配给对象。@如果使用dim,则声明变量,如果使用set语句将对象激活,则使用set语句将内存分配给对象。