gpt4 book ai didi

VBA 类似代码在一个工作表上完美运行,但在另一个工作表上却不行

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

我为我的一个工作表编写了以下代码。

Sub Hide_Projects()
Application.ScreenUpdating = False
i = 6
For i = 6 To 350
Cells(9, i).Select
If Selection.Value = "Project" Then
ActiveCell.EntireColumn.Hidden = True
Else
ActiveCell.EntireColumn.Hidden = False
End If
Next i
Application.ScreenUpdating = True
End Sub

它工作正常,每次都可以完全满足我的需要,而不会崩溃或滞后。但是,当我在不同的工作表上使用类似的代码时,只是这一次应用于行而不是列,它要么使我的 Excel 崩溃,要么需要大约 2 分钟才能运行,即使代码相同。这是第二个代码:
Sub Hide_Projects_5yr()
Application.ScreenUpdating = False
i = 6
For i = 6 To 350
Cells(i, 7).Select
If Selection.Value = "Project" Then
ActiveCell.EntireRow.Hidden = True
Else
ActiveCell.EntireRow.Hidden = False
End If
Next i
Application.ScreenUpdating = True
End Sub

有谁知道为什么会这样?

谢谢!

最佳答案

显然 隐藏速度比 快几倍行 .我试过这个:

Option Explicit

Public Sub TestingSpeed()

Dim lngCount As Long
Dim dtTime As Date


Columns.Hidden = False
rows.Hidden = False

dtTime = Now
For lngCount = 1 To 300
rows(lngCount).Hidden = True
Next lngCount
Debug.Print "Rows: -> "; DateDiff("s", dtTime, Now())

dtTime = Now
For lngCount = 1 To 300
Columns(lngCount).Hidden = True
Next lngCount
Debug.Print "Cols: -> "; DateDiff("s", dtTime, Now())

End Sub

结果如下(以秒为单位):
Rows: ->  9 
Cols: -> 2

并且差异以某种方式呈指数增长。

1.000 sample 是这样的:
Rows: ->  11 
Cols: -> 1

10.000 像这样:
Rows: ->  19 
Cols: -> 10

关于VBA 类似代码在一个工作表上完美运行,但在另一个工作表上却不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45436831/

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