Activesheet vs工作表对象

在我正在使用的工作表工具中,我有一个链接到Sharepoint列表的表。 我写的一个macros刷新表,并删除任何filter,如果任何被激活。

我用这段代码解决的问题是通过快速更改代码来解决的,但是我不太明白为什么activesheet引用可以解决这个问题,并且希望从其他开发者的VBA经验中获得一些反馈。 代码如下:

代码抛出错误:工作表类的方法失败

Dim ResourceTableSheet As Worksheet Set ResourceTableSheet = ThisWorkbook.Worksheets("ResourceTableSheet") If (ResourceTableSheet.AutoFilterMode And ResourceTableSheet.FilterMode) Or ResourceTableSheet.FilterMode Then ResourceTableSheet.ShowAllData <-- **method of worksheet class failed error here** End If 

决议 – 工作代码

  Dim ResourceTableSheet As Worksheet Set ResourceTableSheet = ThisWorkbook.Worksheets("ResourceTableSheet") ResourceTableSheet.Activate If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If 

这是在评论中跳舞,但根据我的经验,除非对象(工作表,图表等)是活动/选定的对象,否则某些事情是行不通的。 我没有一个确定的清单,但是我在过去经历过类似的问题,并按照你所做的方式解决它(使对象处于活动状态)。

我也从来没有find为什么这样。 我花了一些时间寻找,但最终只是把它写成了微软作为微软并继续前进。