繁体   English   中英

根据行中的值自动隐藏/取消隐藏列,该值是从另一个工作表转换而来的公式

[英]Automatically Hide/Unhide Column's based on value in row that is formula transposed from another worksheet

Gday全部

我面临一个问题,需要您的帮助。 请耐心等待,因为我是VBA编码的新手,正在研究它。

我遇到了一个复杂的问题,部分得到了帮助,但是有了这些帮助,我才发现了更多问题。

在单个工作表“ Accounts ListB2:B45中的值由数据验证列表单独确定,选项为“是”或“否”。 是或否的答案会自动转换为B4:AS4的第二个电子表格,即Quarter 1 请注意,这是通过公式=transpose()而不是VBA来=transpose()

我需要宏来识别Quarter 1 B4:AS4中的所有更新,并隐藏不为Yes范围内的任何/所有列。

我正在使用的当前代码是:



Private Sub Worksheet_Calculate()

Application.ScreenUpdating = False
    For Each cell In Range("B4:AS4")   
        Select Case cell.Value <> "Yes"
            Case False
                cell.EntireColumn.Hidden = False
            Case True
                cell.EntireColumn.Hidden = True
        End Select
    Next cell
Application.ScreenUpdating = True

    End Sub

这段代码确实有效,并且达到了我需要的结果,但是,这使电子表格非常慢,因为每次我在第一Quarter 1输入数据或进行任何更改时,电子表格都会加载。 我需要此代码既要瞬时又要不要滞后,因为大量的源数据将手动输入。

预先感谢您的帮助!!

更新:由于困难,如果需要,我很乐意单击“ Accounts list上的“宏”按钮来刷新Quarter 1 ,半降低动态功能,但我很乐意牺牲。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("B4:AS4")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    For Each cell in Target.Cells
        With cell
            If .Value <> "Yes" Then
                .EntireColumn.Hidden = True
            Else
                .EntireColumn.Hidden = False
            End If
        End With
    Next cell
    Application.EnableEvents = True
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM