gpt4 book ai didi

excel - 使用 VBA 动态隐藏行

转载 作者:行者123 更新时间:2023-12-04 21:49:43 25 4
gpt4 key购买 nike

我有一个电子表格,它隐藏了除由日期和命名区域指定的行之外的所有行,如下所示:

'Get week no value...
wk = Range("$B$2").Value

'If value changes...
If Target.Address = "$B$2" Then
'Hide all rows/weeks...
Range("allWeeks").Select
Application.Selection.EntireRow.Hidden = True

'...but show week selected by 'wk'
Range(wk).Select
Application.Selection.EntireRow.Hidden = False

一切都很好。然而。在每个命名周内,我在要隐藏的行的 A 列中隐藏了由“HC”定义的计算行。 Range(wk) 的显示取消隐藏那些隐藏的行,所以我引入了一个循环来关闭所有“HC”隐藏列
Dim x As Integer

For x = 1 To 1500
If Sheet1.Cells(x, 1).Value = "HC" Then
Sheet1.Rows(x).Hidden = True

End If
Next

End Sub

结果是它有点工作,但每次我输入一个使工作表几乎无法使用的单元格时,我都必须等待几秒钟才能完成该过程。任何指针将不胜感激。

最佳答案

通常,您希望建立一系列行以隐藏在循环中,然后分别隐藏该范围。您可以使用他 Union() 构建要隐藏的范围像这样的功能:

Option Explicit

Sub HideRows()

Dim mainRng As Range
Set mainRng = Range("A2:A" & Range("A" & Rows.count).End(xlUp).Row)

Dim unionRng As Range

Dim i As Long
For i = mainRng.Row To mainRng.Row + mainRng.Rows.count - 1
If Cells(i, 1).Value2 = "HC" Then
If Not unionRng Is Nothing Then
Set unionRng = Union(unionRng, Cells(i, 1))
Else
Set unionRng = Cells(i, 1)
End If
End If
Next i

If Not unionRng Is Nothing Then unionRng.EntireRow.Hidden = True

End Sub

关于excel - 使用 VBA 动态隐藏行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57145420/

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