Vba Excel宏基于字符串隐藏列
我试图在Excel 2016中创建一个宏,该宏根据不同单元格中包含的字符串自动隐藏列。现在,范围R1:GJU1是一个用IF公式填充X的公式 这是我的代码:Vba Excel宏基于字符串隐藏列,vba,excel,Vba,Excel,我试图在Excel 2016中创建一个宏,该宏根据不同单元格中包含的字符串自动隐藏列。现在,范围R1:GJU1是一个用IF公式填充X的公式 这是我的代码: Sub Hide_Columns_Containing_Value() Dim c As Range For Each c In Range("R1:GJU1").Cells If c.Value = "X" Then c.EntireColumn.Hidden = False
Sub Hide_Columns_Containing_Value()
Dim c As Range
For Each c In Range("R1:GJU1").Cells
If c.Value = "X" Then
c.EntireColumn.Hidden = False
End If
Next c
End Sub
我得到这个错误:
Run-time error '13':
Type mismatch
感谢您的帮助 我正在用手机输入,因此无法测试,但这样做:
Columns(c.column).EntireColumn.Hidden = True
会有用的。基本上,您要做的只是说Cell.Hide
,这是行不通的。引用列时,entireclumn.Hidden
将起作用。因此,您应该说,隐藏此单元格列的列
我还注意到您将其设置为False
,这意味着取消隐藏。我猜这是错误的,除非你真的想把它藏起来
完整代码应为:
Sub Hide_Columns_Containing_Value()
Dim c As Range
For Each c In Range("R1:GJU1").Cells
If c.Value = "X" Then
Columns(c.column).EntireColumn.Hidden = True
End If
Next c
End Sub
让我知道它是否有效 我正在用手机输入,因此无法测试,但这样做:
Columns(c.column).EntireColumn.Hidden = True
会有用的。基本上,您要做的只是说Cell.Hide
,这是行不通的。引用列时,entireclumn.Hidden
将起作用。因此,您应该说,隐藏此单元格列的列
我还注意到您将其设置为False
,这意味着取消隐藏。我猜这是错误的,除非你真的想把它藏起来
完整代码应为:
Sub Hide_Columns_Containing_Value()
Dim c As Range
For Each c In Range("R1:GJU1").Cells
If c.Value = "X" Then
Columns(c.column).EntireColumn.Hidden = True
End If
Next c
End Sub
让我知道它是否有效 可能对youtry列(c.column)有所帮助。EntireColumn.Hidden=False
。。。假设错误在那一行。我尝试使用你的代码在那一行,得到了相同的错误。可能对youtry列(c.column)有所帮助。EntireColumn.Hidden=False
。。。假设错误在那一行。我尝试使用你的代码在那一行,我得到了同样的错误。谢谢你的参与。因此,我的工作表最初为用户隐藏了列。我有一个下拉列表(使用数据验证范围),将R1:GJU1更改为带有IF语句的“X”(主要是因为我无法使宏与我的下拉列表一起工作)。当我使用你的代码时,它确实有效!现在,如果我希望用户能够在下拉列表中选择不同的选项来“重新隐藏”以前的列(在每个下拉列表的旧标准上),并且只显示新的列,那该怎么办?啊,这更有意义!代码是否有帮助?抱歉,编辑了我之前的评论。这段代码确实有帮助,现在正试图优化,使其更具动态性,只在特定单元格中显示一个值。因此,您可以点击下拉列表本身,并在更改时调用宏。如果更改为某个值,则执行操作
。但是,这个问题与这个大不相同。为了网站的实用性,你应该把这个问题作为一个新问题来问,因为它们彼此之间有很大的不同。如果我的答案是正确的,请帮我一个忙,并将其标记为正确答案。:)发布新问题,一旦发布,我也会在这方面提供帮助!谢谢你的参与。因此,我的工作表最初为用户隐藏了列。我有一个下拉列表(使用数据验证范围),将R1:GJU1更改为带有IF语句的“X”(主要是因为我无法使宏与我的下拉列表一起工作)。当我使用你的代码时,它确实有效!现在,如果我希望用户能够在下拉列表中选择不同的选项来“重新隐藏”以前的列(在每个下拉列表的旧标准上),并且只显示新的列,那该怎么办?啊,这更有意义!代码是否有帮助?抱歉,编辑了我之前的评论。这段代码确实有帮助,现在正试图优化,使其更具动态性,只在特定单元格中显示一个值。因此,您可以点击下拉列表本身,并在更改时调用宏。如果更改为某个值,则执行操作
。但是,这个问题与这个大不相同。为了网站的实用性,你应该把这个问题作为一个新问题来问,因为它们彼此之间有很大的不同。如果我的答案是正确的,请帮我一个忙,并将其标记为正确答案。:)发布新问题,一旦发布,我也会在这方面提供帮助!