Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel宏基于字符串隐藏列_Vba_Excel - Fatal编程技术网

Vba Excel宏基于字符串隐藏列

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

我试图在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
        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”(主要是因为我无法使宏与我的下拉列表一起工作)。当我使用你的代码时,它确实有效!现在,如果我希望用户能够在下拉列表中选择不同的选项来“重新隐藏”以前的列(在每个下拉列表的旧标准上),并且只显示新的列,那该怎么办?啊,这更有意义!代码是否有帮助?抱歉,编辑了我之前的评论。这段代码确实有帮助,现在正试图优化,使其更具动态性,只在特定单元格中显示一个值。因此,您可以点击下拉列表本身,并在更改时调用宏。如果更改为某个值,则
执行操作
。但是,这个问题与这个大不相同。为了网站的实用性,你应该把这个问题作为一个新问题来问,因为它们彼此之间有很大的不同。如果我的答案是正确的,请帮我一个忙,并将其标记为正确答案。:)发布新问题,一旦发布,我也会在这方面提供帮助!