excel - 隐藏显示特定列复杂
问题描述
首先,我在这里和 VBA 都是 n00b。
我还花了几个小时阅读与我试图解决的问题类似的问题,但收效甚微。我试图想出一种基于单元格“A1”的值隐藏/显示特定列的方法。问题是我有大约 200 列,我发现管理的唯一方法是通过包含所有范围的多行代码(见下文)。
我想知道两件事:
1)有没有更有效的编码方式,这样我就不需要这么多行了?和 2) 理想情况下:有没有办法对此进行编码,以便它实际查看 excel 行中的值并隐藏单元格不包含“Q1”的那些列?
多谢你们 :)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
Columns("G:I").Hidden = Target.Value = "Q1"
Columns("K:Z").Hidden = Target.Value = "Q1"
Columns("AB:AQ").Hidden = Target.Value = "Q1"
Columns("AS:BH").Hidden = Target.Value = "Q1"
Columns("BJ:BY").Hidden = Target.Value = "Q1"
Columns("CA:CP").Hidden = Target.Value = "Q1"
Columns("CR:DG").Hidden = Target.Value = "Q1"
Columns("CR:DG").Hidden = Target.Value = "Q1"
Columns("DI:DX").Hidden = Target.Value = "Q1"
Columns("DZ:EO").Hidden = Target.Value = "Q1"
...ETC。
解决方案
猜测一下你真正想做的事情......
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng as range, c as range, rngHide as range
If Target.Address() = Me.Range("A1").Address() Then
set rng = me.range("G14:EO14")
rng.entirecolumn.hidden = false
If target.value = "ALL" then exit sub '<<< show all
for each c in rng.cells
If c.value <> Target.Value then
if rngHide is nothing then
set rngHide = c
Else
set rngHide = Application.Union(rngHide, c)
end if
end if
next c
If not rngHide is nothing then rnghide.entirecolumn.hidden = true
End if
End Sub
推荐阅读
- python - Flask AttributeError:“LoginForm”对象没有属性“userEmail”
- typescript - 如何在 TypeScript 中安全地使用函数属性
- c++ - 是否可以使用旧版 C++ API(版本 1.1.2)连接到 MongoDB Atlas?
- kubernetes - 更新节点租约失败,错误:无法在leaes.coordination.k8s.io“yang”上完成操作
- android - 以循环方式滚动无限点列表(Circular Infinite Recycler View)
- python - 是否可以删除 tkinter 图像上的背景
- ringcentral - 我们可以在 RingCentral 沙盒中录制通话吗
- html - 响应内联块到块 2nd div 超出容器
- php - symfony 5 getUser() 的身份验证问题
- javascript - 如何让我的程序自动滚动以查看 VueJs 中的绑定类?