Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Excel 使用单元格';s值作为宏的一部分_Excel_Variables_Range_Cell_Defined - Fatal编程技术网

Excel 使用单元格';s值作为宏的一部分

Excel 使用单元格';s值作为宏的一部分,excel,variables,range,cell,defined,Excel,Variables,Range,Cell,Defined,我通常使用宏来使用复选框显示和隐藏列。 我通过在宏代码中定义列来设置它 对于此代码,A1=复选框的结果(真/假) 和B:C是我正在隐藏的列,或者,如果已经隐藏的话;展示 但是,现在我正在制作一个更动态的版本,因为我已经厌倦了在添加新列或列范围更改时滚动宏代码和更改每个列引用 现在,我已将要隐藏在工作表单元格A2中的列放入表格中 e、 g B:C 我希望宏代码使用该单元格的值作为“定义范围”?显示和隐藏我在单元格A2中定义的列范围 我发现了很多类似的帖子,但它们略有不同,我无法使其适用于我的特定场

我通常使用宏来使用复选框显示和隐藏列。 我通过在宏代码中定义列来设置它

对于此代码,A1=复选框的结果(真/假) 和B:C是我正在隐藏的列,或者,如果已经隐藏的话;展示

但是,现在我正在制作一个更动态的版本,因为我已经厌倦了在添加新列或列范围更改时滚动宏代码和更改每个列引用

现在,我已将要隐藏在工作表单元格A2中的列放入表格中 e、 g B:C

我希望宏代码使用该单元格的值作为“定义范围”?显示和隐藏我在单元格A2中定义的列范围

我发现了很多类似的帖子,但它们略有不同,我无法使其适用于我的特定场景

新的看起来像这样


有什么想法吗?

这段代码应该可以做到:

Sub HideShow()

    Dim ColsToHide As String
    ColsToHide = Sheet1.Range("A2") 'This will always get the value from the sheet with the codename Sheet1.

    'Unhide if hidden, hide if not hidden.
    ActiveSheet.Columns(ColsToHide).Hidden = Not ActiveSheet.Columns(ColsToHide).Hidden

End Sub  

也许有更好的方法来确定哪些列需要隐藏——关于某个列,有没有什么具体的方法来决定它是否应该隐藏?

谢谢Darren。这不仅简化了我原来的宏,而且回答了这个问题。我还没有试过,但我很确定它会起作用。Dim标题需要是特定的名称还是自定义标题?我计划将宏设置为“活动工作表”,而不是指定的工作表。不,您可以使用几乎任何您想要的单词作为变量。避免使用VBA已经使用过的单词,如
工作簿
名称
,等等。。(当你说Dim title时,我认为你指的是
ColsToHide
位)。
Sub Hideshow()
    If Range("A1").Value = "True" Then
        ActiveSheet.Columns(" The Value in A2 ").Hidden = False
    ElseIf Range("A1").Value = "False" Then
        ActiveSheet.Columns(" The Value in A2").Hidden = True
    Else
    Return
    End If
    End Sub
Sub HideShow()

    Dim ColsToHide As String
    ColsToHide = Sheet1.Range("A2") 'This will always get the value from the sheet with the codename Sheet1.

    'Unhide if hidden, hide if not hidden.
    ActiveSheet.Columns(ColsToHide).Hidden = Not ActiveSheet.Columns(ColsToHide).Hidden

End Sub