【发布时间】:2019-06-13 15:18:55
【问题描述】:
在工作簿中,我想遍历所有工作表,并根据每个工作表的某个单元格中的关键字,我想在各个工作表中隐藏一些不连续的列。 隐藏单个列或多个连续的列没有问题,但是当我将多个不连续的列设置为我的范围时它不起作用。
Sub HideColumns()
Dim i As Integer
Dim x As Integer
i = Worksheets.Count
For x = 1 To i
Worksheets(x).Range("A:AX").EntireColumn.Hidden = False
If InStr(1, Worksheets(x).Range("A1").Value, "keyword", 1) <> 0 Then
Worksheets(x).Range("D:E, G:H").EntireColumn.Hidden = True
Else: Worksheets(x).Range("A:AX").EntireColumn.Hidden = False
End If
Next x
End Sub
谁能告诉我为什么这不起作用?
当然,一种解决方法是分别添加所有列,但我更愿意以更短的方式进行,当然,我想了解更多关于 VBA 的信息。顺便说一句,我是 VBA 的初学者。
【问题讨论】:
-
您能解释一下“不起作用”是什么意思吗?例如错误代码?
-
我得到的错误是“运行时错误'1004':应用程序定义的或对象定义的错误”。由于当将单个列或多个连续列作为要隐藏的列的范围给出时,子执行它应该做的事情,我假设存在一些我不知道的语法错误,这意味着在我的场景中由于某种原因,不可能给出多个非连续列的范围。
-
嗯。
Range("D:E, G:H").EntireColumn.Hidden = True在空白工作簿中工作得很好。单子是什么样的?您可以手动隐藏这些列吗? -
我在没有循环的情况下再次尝试了它,但它也没有工作(虽然它之前做过),所以我只是重新启动了 excel,现在我在上面发布的代码工作......重新启动 excel 似乎有做到了,现在我觉得问这个问题很愚蠢。无论如何,谢谢你的帮助。
-
嗯不用觉得自己很蠢。毕竟,您不确定语法。重要的是问题解决了。