Excel 根据从其他图纸中选择的值取消隐藏图纸中的列
我有一张名为“说明”的表格,人们可以从中选择他们参加的活动数量,从1到25。这是在H18单元 我希望能够根据所选内容隐藏sheet InputSheet中的列。例如,如果他们选择3个活动,我需要能够隐藏F:AA列。如果他们选择10个活动,我需要隐藏M:AA列。我需要隐藏的列是D:AA 我浏览了很多论坛,但只找到了隐藏行或是,没有选项的方法。不是这样的。感谢您的帮助 快速循环Excel 根据从其他图纸中选择的值取消隐藏图纸中的列,excel,vba,Excel,Vba,我有一张名为“说明”的表格,人们可以从中选择他们参加的活动数量,从1到25。这是在H18单元 我希望能够根据所选内容隐藏sheet InputSheet中的列。例如,如果他们选择3个活动,我需要能够隐藏F:AA列。如果他们选择10个活动,我需要隐藏M:AA列。我需要隐藏的列是D:AA 我浏览了很多论坛,但只找到了隐藏行或是,没有选项的方法。不是这样的。感谢您的帮助 快速循环 Sub Hide Worksheets("InputSheet").Columns("D:AA").Hidden
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
您可以尝试将此作为第一步:
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
将其放在工作表说明的代码模块中 每次在1和10之间更改单元格H18时,它都会在另一张表中隐藏所需的范围:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NumberOfActivities As Long
If Not Intersect(Target, Me.Range("H18")) Is Nothing Then
Application.EnableEvents = False
NumberOfActivities = CLng(Me.Range("H18").Value)
If NumberOfActivities >= 1 And NumberOfActivities <= 10 Then
With Sheets("InputSheet")
.Columns("D:AA").Hidden = False
.Range( _
.Range("D1").Offset(0, NumberOfActivities - 1), _
.Range("AA1")).EntireColumn.Hidden = True
End With
End If
Application.EnableEvents = True
End If
End Sub
请试一试,看看你能做些什么-即使你不能让它工作,我们也可以帮助你调整代码以实现你的目标谢谢!我试过了,效果很好!我最终使用了上面的循环,但是感谢你的建议谢谢你的建议,这是一个很好的建议,它确实有效。最终使用了上面的循环,但感谢您的帮助!