根据其他列结构使用VBA控制隐藏,显示列

问题描述

我无法为VBA根据“模板”区域(C至G列)设置(隐藏或显示)某些区域(K至O列)中的列的正确逻辑。 在下面的示例中,我隐藏了D列,我想运行一个代码来扫描隐藏或显示C3到G3范围内的哪些列,并相应地(显示或隐藏列)编辑K3到O3范围内的列,在此示例中表示隐藏列L。 我可以使用范围,并且可以根据自己的目的进一步编辑代码,但是我只是不知道如何以某种方式将列结构保存在模板中,然后在第二个区域中复制它。 此外,模板中将包含公式,而编辑区域中将包含null,但是我想我可以自己进行此调整。 我将不胜感激。

Example of columns

解决方法

请尝试下一个代码,

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