【发布时间】:2018-08-16 10:28:25
【问题描述】:
我想使用 VBA 循环浏览特定的工作表,以便在它们被隐藏时取消隐藏它们。 我想使用工作表的代码名称,而不是索引或名称。
我尝试过类似的方法,但它返回错误“需要对象”在线
If HiddenSheets(sCounter).Visible = xlSheetHidden Then
***新信息:我正在单独的工作簿中编写此代码。我为该工作簿 WB_Master 创建了一个变量。也许我应该使用这个变量以某种方式调用该工作簿中的工作表?
Dim HiddenSheets As Variant
Dim sCounter As Long
HiddenSheets = Array(Sheet4, Sheet5, Sheet6, Sheet25, Sheet26, Sheet27, Sheet33)
For sCounter = LBound(HiddenSheets) To UBound(HiddenSheets)
If HiddenSheets(sCounter).Visible = xlSheetHidden Then
HiddenSheets(sCounter).Visible = xlSheetVisible
End If
Next sCounter
【问题讨论】:
-
你的一个(或多个)代号一定是错误的。
-
您的代码对我来说运行良好.. 尝试使用 False 而不是 xlSheetHidden 并确保数组中的所有代码名称都存在
-
代号是正确的。正如我在编辑后的帖子中所说,这些工作表与保存此代码的工作簿位于不同的工作簿中。也许这与错误有关。
-
您不能直接在不同的工作簿中使用工作表的代号,除非您设置了对该工作簿项目的引用(它必须是启用宏的格式)。
-
@QHarr,不幸的是,这个问题被标记为重复,另一个问题中提供的答案需要访问 VBA 项目对象模型,Rory 在一些 VBA 代码中的评论将是另一种方法