在VBA中使用工作表函数而不激活工作表

在VBA中使用工作表函数而不激活工作表,vba,excel,Vba,Excel,我使用以下代码确定工作表上的下一个空行: emptyrow = WorksheetFunction.CountA(Range("B:B")) + 1 然而,我注意到它只在我想要使用的页面被激活时才起作用。我尝试使用with语句,如下所示: With MyWorksheet emptyrow = WorksheetFunction.CountA(Range("B:B")) + 1 End With 但我几乎一打完就意识到这不是with的正确用法。如何在不激活工作表的情况下执行工作表功能?我正在

我使用以下代码确定工作表上的下一个空行:

emptyrow = WorksheetFunction.CountA(Range("B:B")) + 1
然而,我注意到它只在我想要使用的页面被激活时才起作用。我尝试使用with语句,如下所示:

With MyWorksheet
emptyrow = WorksheetFunction.CountA(Range("B:B")) + 1
End With

但我几乎一打完就意识到这不是with的正确用法。如何在不激活工作表的情况下执行工作表功能?我正在循环浏览许多工作表,不希望每个工作表都被激活。谢谢

正如蒂姆·威廉姆斯(TimWilliams)在评论中所说,我只需要在前面加上一个句号

range
成功

.range

它是有效的。

您缺少将
范围
与工作表对象关联的前导周期:
工作表函数.CountA(.Range(“B:B”)+1
如果您的数据中可能有空单元格,那么这(使用CountA)是不可靠的,尽管…
设置我的工作表=工作表(“名称”)
而不是
设置MyWorksheet=ActiveWorksheet
另请参见@TimWilliams谢谢!我早该想到这一点。@UGP我已经设置了我的工作表=工作表(“名称”)