根据从另一个工作表中选择的值取消隐藏工作表中的列

时间:2019-05-09 13:24:38

标签: excel vba

我有一张名为“说明”的工作表,人们可以在其中选择参加的活动数量(从1-25开始)。这是在H18单元格中

我希望能够根据其选择隐藏工作表“ InputSheet”中的列。因此,例如,如果他们选择“ 3”个活动,则我需要能够隐藏列F:AA。如果他们选择10个活动,那么我需要隐藏M:AA列。我需要隐藏的列来自D:AA。

我浏览了许多论坛,但只找到隐藏行或“是”,“否”选项的方法。不是多个这样的。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:1)

快速循环

Sub Hide
    Worksheets("InputSheet").Columns("D:AA").Hidden = False
    Dim i as long
    For i = Worksheets("Instructions").Range("H18") + 4 to 27
         Worksheets("InputSheet").Columns(i).Hidden = True
    Next i
End Sub

或者没有循环:

Sub Hide
    Worksheets("InputSheet").Columns("D:AA").Hidden = False
    With Worksheets("InputSheet")
        .Range(.Cells(1,Worksheets("Instructions").Range("H18").Value + 4),.Cells(1,27)).EntireColumn.Hidden = True
    End With
 End Sub

答案 1 :(得分:0)

您可以先尝试以下步骤:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Value As Long
    Dim ColumnsToHide As String

    If Not Intersect(Target, ThisWorkbook.Worksheets("Instructions").Range("H18")) And Target.Count = 1 Then

        Value = Target.Value

        Select Case Value

            Case Is = 3
                ColumnsToHide = "F:AA"
            Case Is = 10
                ColumnsToHide = "M:AA"

        End Select

        Application.EnableEvents = False

            With ThisWorkbook.Worksheets("InputSheet")
                .Cells.EntireColumn.Hidden = False
                .Columns(ColumnsToHide).EntireColumn.Hidden = True
            End With

        Application.EnableEvents = True

    End If

End Sub

答案 2 :(得分:0)

将其放在工作表“指令”的代码模块中。

每次将H18单元格更改为1到10之间时,它都会在另一张工作表中隐藏所需范围:

A(mod(x+y,2)==0) = your_target_value ;