gpt4 book ai didi

VBA根据动态第一行值隐藏和取消隐藏列

转载 作者:行者123 更新时间:2023-12-04 20:38:33 26 4
gpt4 key购买 nike

我有一个包含 2 张工作表的 Excel 工作簿:summaryClickHide .

  • Summary Sheet包含多个复选框表单。当复选框被选中时,它们返回 TRUEFALSE ClickHide Sheet 中的值, 全部在 ROW A .
  • ClickHideSheet : 在 A2:A20 中的这些值旁边,我将“0”或“1”值赋予 TRUE or FALSE结果。这些结果水平在 B2:BZ45 范围内。 .在 ClickHide Row 1 ,我有公式可以在每列的顶部得到结果。
  • Summary B1:BZ1我已将链接复制到 ClickHide A1:BZ1 中的单元格.

  • 我的问题 :

    I intend to make the columns in Summary to automatically hide when the value in their own row is not 0. (if B1 is not 0, hide column B, otherwise unhide). The user will interact with the checkboxes, so the macro needs to be triggered every time a checkbox is modified.



    我在那里找到了代码片段,但它们似乎都不起作用。我真的不擅长 VBA,所以它可能是我缺少的一个简单的编辑。

    这两个我都试过了,都没有成功。看看 the following reference .
        Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    For i = 2 To 80
    Cells(1, i).EntireColumn.Hidden = Cells(2, i) = 0
    Next
    End Sub

    下一个我真的不知道它是否是 VBA 代码。
    oSheets = ThisComponent.getSheets()
    oSheet1 = oSheets.getByName("Sheet1")
    oColumns = oSheet1.getColumns()
    for i = 0 to 25
    oCol = oColumns.getByIndex(i)
    oCell = oSheet1.getCellByPosition(i,0) 'First row has index 0
    If oCell.Value = 0 Then
    oCol.isVisible = False
    Else
    oCol.isVisible = True
    End If
    next i

    我不知道如何在这里嵌入电子表格,所以这里是两张表格的图片,简化以显示示例。
  • Summary Sheet
  • ClickHide Sheet

  • 提前感谢您提供的任何帮助。

    最佳答案

    将此代码放入 ThisWorkbook模块:

    Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Dim rng As Range
    Application.ScreenUpdating = False
    For i = 2 To 9
    Set rng = Cells(1, i)
    If rng.EntireColumn.Hidden = 0 Then
    If rng.Value = 1 Then rng.EntireColumn.Hidden = 1
    Else
    If rng.Value = 0 Then rng.EntireColumn.Hidden = 0
    End If
    Next i
    End Sub

    它适用于 B 列至 I (第 2 至 9 列)在任何工作表上。如果您需要评估的列发生变化,请更改此数字。

    enter image description here

    如果您希望它只在特定工作表上工作,请将第一行更改为 Private Sub Worksheet_Calculate()并将其放置在该特定工作表的模块中。

    编辑:修改后的代码,当更改很少时,它可能会运行得更快。

    关于VBA根据动态第一行值隐藏和取消隐藏列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38320319/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com