Excel 对象的多个增量,它们设置为“空”
我设置了多个工作表对象,只有最后一个对象设置为Nothing,第一个X为空 多行声明正在工作 将ws1、ws2标注为工作表 如果ws1什么都不是,那么 如果ws1=那么 如果ws1=空,则 如果ws1=vbEmpty,则 如果我是空的,那么 如果为NullWS1,则 “我试过所有这些,但都失败了 '运行时错误 如果ws2什么都不是,那么 “很好 将ws1标注为工作表,将ws2标注为工作表 如果ws1什么都不是,那么 “很好 如果ws2什么都不是,那么 “很好 因p的回答而进行跟进ᴇʜExcel 对象的多个增量,它们设置为“空”,excel,vba,object,worksheet,Excel,Vba,Object,Worksheet,我设置了多个工作表对象,只有最后一个对象设置为Nothing,第一个X为空 多行声明正在工作 将ws1、ws2标注为工作表 如果ws1什么都不是,那么 如果ws1=那么 如果ws1=空,则 如果ws1=vbEmpty,则 如果我是空的,那么 如果为NullWS1,则 “我试过所有这些,但都失败了 '运行时错误 如果ws2什么都不是,那么 “很好 将ws1标注为工作表,将ws2标注为工作表 如果ws1什么都不是,那么 “很好 如果ws2什么都不是,那么 “很好 因p的回答而进行跟进ᴇʜ Dim w
Dim ws1, ws2 As Worksheet
If ws1 Is Nothing Or IsEmpty(ws1) then
'runtime error
If IsEmpty(ws1) then
'works fine
If ws2 Is Nothing then
'works fine
运行时错误424
我只是想用多行声明使代码更干净,也许这是不可能的
结论:
我们必须分别声明每个变量!
有关详情,请参阅第一份答覆
我设置了多个“工作表”对象
不,你没有
如果你申报
Dim ws1, ws2 As Worksheet
那么ws2属于工作表类型,但ws1属于Variant类型,因为您没有为第一个变量指定类型。因此,除非将ws1设置为1,否则它不是对象。如果ws1为Nothing,则会失败,因为它只能与对象一起使用
这和
Dim ws1 As Variant, ws2 As Worksheet
如果在VBA中的一行中声明多个变量,则仍然需要为每个变量指定一个类型,否则默认情况下它将是Variant:
Dim ws1 As Worksheet, ws2 As Worksheet
注:
这仅在VBA中有效。如果您也使用VB.NET,请务必小心,因为有Dim a,b As Long将两个变量定义为Long!在VBA中,它不是
跟进答覆:
下面的If语句
Dim ws1, ws2 As Worksheet
If ws1 Is Nothing Or IsEmpty(ws1) then
错误,因为在带有或/和运算符的If语句中,无论其他测试的结果如何,所有测试都将执行。所以在本例中,它测试ws1为Nothing和IsEmptyws1
第一个错误是因为ws1是Variant,不是一个对象,而是Nothing,它只适用于对象。因此,整个语句都有错误
我设置了多个“工作表”对象
不,你没有
如果你申报
Dim ws1, ws2 As Worksheet
那么ws2属于工作表类型,但ws1属于Variant类型,因为您没有为第一个变量指定类型。因此,除非将ws1设置为1,否则它不是对象。如果ws1为Nothing,则会失败,因为它只能与对象一起使用
这和
Dim ws1 As Variant, ws2 As Worksheet
如果在VBA中的一行中声明多个变量,则仍然需要为每个变量指定一个类型,否则默认情况下它将是Variant:
Dim ws1 As Worksheet, ws2 As Worksheet
注:
这仅在VBA中有效。如果您也使用VB.NET,请务必小心,因为有Dim a,b As Long将两个变量定义为Long!在VBA中,它不是
跟进答覆:
下面的If语句
Dim ws1, ws2 As Worksheet
If ws1 Is Nothing Or IsEmpty(ws1) then
错误,因为在带有或/和运算符的If语句中,无论其他测试的结果如何,所有测试都将执行。所以在本例中,它测试ws1为Nothing和IsEmptyws1
第一个错误是因为ws1是Variant,不是一个对象,而是Nothing,它只适用于对象。因此,整个语句都有错误。好的,但是为什么下面的if语句失败:``如果ws_1为Nothing或IsEmtyws_1,那么'做点什么'获取运行时错误结束如果```@Patrick因为Nothing需要一个对象,但是如果ws1是Variant,它不是一个对象,因此失败。@Patrick在带有或和运算符的if语句中表示所有测试都已执行。如果其中一个出错,则整个If语句都会出错。因为没有错误,所以整个陈述都不起作用,但是为什么下面的if语句失败:``如果ws_1为Nothing或IsEmtyws_1,那么'做点什么'获取运行时错误结束如果```@Patrick因为Nothing需要一个对象,但是如果ws1是Variant,它不是一个对象,因此失败。@Patrick在带有或和运算符的if语句中表示所有测试都已执行。如果其中一个出错,则整个If语句都会出错。因为没有任何错误,所以整个语句都不起作用。