我有一张名为“说明”的工作表,人们可以在其中选择参加的活动数量(从1-25开始)。这是在H18单元格中
我希望能够根据其选择隐藏工作表“ InputSheet”中的列。因此,例如,如果他们选择“ 3”个活动,则我需要能够隐藏列F:AA。如果他们选择10个活动,那么我需要隐藏M:AA列。我需要隐藏的列来自D:AA。
我浏览了许多论坛,但只找到隐藏行或“是”,“否”选项的方法。不是多个这样的。任何帮助表示赞赏!
答案 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 ;