问题描述
我无法为VBA根据“模板”区域(C至G列)设置(隐藏或显示)某些区域(K至O列)中的列的正确逻辑。 在下面的示例中,我隐藏了D列,我想运行一个代码来扫描隐藏或显示C3到G3范围内的哪些列,并相应地(显示或隐藏列)编辑K3到O3范围内的列,在此示例中表示隐藏列L。 我可以使用范围,并且可以根据自己的目的进一步编辑代码,但是我只是不知道如何以某种方式将列结构保存在模板中,然后在第二个区域中复制它。 此外,模板中将包含公式,而编辑区域中将包含null,但是我想我可以自己进行此调整。 我将不胜感激。
解决方法
请尝试下一个代码,
Sub testHideUnhide()
Dim sh As Worksheet,rng As Range,cel As Range
Set sh = ActiveSheet 'use here your sheet,if not the active one
Set rng = sh.Range("C3:G3")
For Each cel In rng.cells
cel.Offset(0,9).EntireColumn.Hidden = cel.EntireColumn.Hidden
Next
从这种角度来看,它将根据“ C:G”情况在“ K:O”范围内隐藏和取消隐藏列。
,隐藏带偏移的列
Option Explicit
Sub hideCols()
Const src As String = "C:G"
Const dst As String = "K:O"
Dim n As Long
For n = 1 To Columns(dst).Count
Columns(dst).Columns(n).Hidden = Columns(src).Columns(n).Hidden
Next n
End Sub