excel - 在excel中隐藏选择之外的列
问题描述
我有一个简单的 VBA 可以根据下拉列表在 Excel 中选择支付期日期。如何在选定的支付期之前和之后隐藏某个范围内的所有列?
Private Sub CommandButton1_Click()
Dim ppe_start As Long
Dim ppe_end As Long
ppe_start = Range("B1")
ppe_end = Range("B2")
Columns("C:ER").Hidden = True
Range(Columns(ppe_start), Columns(ppe_end)).Select.Hidden = False
End Sub
使用此代码,我收到运行时错误 424:需要对象。
解决方案
我假设您在下拉列表中设置了日期。
B1
然后,您将隐藏除日期 () 2018-03-01和 ( B2
) 2018-07-01之间的列之外的所有列。
我将您的代码修改为动态的。
VBA代码:
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Sheet1") 'set Sheet name
Dim ppe_start As Date
Dim ppe_end As Date
Dim FoundStart As Long
Dim FoundEnd As Long
ppe_start = Range("B1") 'Set first date
ppe_end = Range("B2") 'Set last date
Columns.EntireColumn.Hidden = False 'Unhide all columns
With ws
FoundStart = .Range("3:3").Find(What:=ppe_start, LookIn:=xlValues, LookAt:=xlWhole).Column - 1 'Find column number where First date exist in row 3
FoundEnd = .Range("3:3").Find(What:=ppe_end, LookIn:=xlValues, LookAt:=xlWhole).Column + 1 'Find column number where Last date exist in row 3
.Range(.Cells(3, "C"), .Cells(3, FoundStart)).EntireColumn.Hidden = True 'From Column C until Column First date, hide
.Range(.Cells(3, FoundEnd), .Cells(3, "ER")).EntireColumn.Hidden = True 'From Column Last Date until Column ER, hide
.Columns("B").ColumnWidth = 9.71 'To preserv the width of Column B, not necessary
End With
End Sub
结果将是这样的:
推荐阅读
- spring - 如何将 Spring Boot 配置文件与 Maven 配置文件集成?
- ios - 有没有办法从 Google 登录页面中删除用户?
- python - 将唯一标签添加到选项卡上的行
- .net - 设置 SelectedIndex 后组合框值被清除
- c++ - 如何使用私有成员引用传递给其他函数的对象?
- android - ArrayAdapter 中的按钮不可点击
- azure-devops - 将 Azure DevOps 项目映射到新文件夹
- linux - 为什么linux bash在将其输出分配给变量时不执行我管道中的第一个命令?
- azure - 当我尝试访问我是所有者的组织时收到 401 错误
- python - 给定x,y轴上数组的不同位置,如何获得两个数组之间的空间距离