Performance 简化代码,在12个工作表上同时快速执行功能
我正在使用以下代码,该代码正在成功运行Performance 简化代码,在12个工作表上同时快速执行功能,performance,excel,excel-2007,vba,Performance,Excel,Excel 2007,Vba,我正在使用以下代码,该代码正在成功运行 Sub Button2_Click() Application.ScreenUpdating = False Dim rngMyRange As Range Dim cell As Range Sheets("Jan").Activate Sheets("Jan").Select Cells.Select Selection.EntireRow.Hidden = False Set rngMyRange = Range
Sub Button2_Click()
Application.ScreenUpdating = False
Dim rngMyRange As Range
Dim cell As Range
Sheets("Jan").Activate
Sheets("Jan").Select
Cells.Select
Selection.EntireRow.Hidden = False
Set rngMyRange = Range("JanRangeTotal")
For Each cell In rngMyRange.Cells
cell.Select
If cell.Value = "" Then GoTo DOTHETHING
Next cell
DOTHETHING:
Selection.Resize(1812).Select
Selection.EntireRow.Hidden = True
Sheets("Jan").Select
Cells.Select
Selection.Copy
Sheets(Array("Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") _
).Select
Sheets("Feb").Activate
Cells.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Sheets(Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", _
"Dec")).Select
Sheets("Feb").Activate
Range("C7").Select
Sheets("PO to Complete").Select
Application.ScreenUpdating = True
End Sub
不幸的是,它需要大约15秒的时间来运行,并且已经打开了屏幕更新,这是消耗时间最多的大规模复制和粘贴练习。因此,我想把数组select放在代码的更高位置,这样它就可以对所有工作表进行设置,并且不需要将格式从一月复制粘贴到其他月份的所有工作表上。我想出了下面的代码:
Sub Button2_Click()
Dim rngMyRange As Range
Dim cell As Range
Sheets("Jan").Activate
Sheets("Jan").Select
Cells.Select
Selection.EntireRow.Hidden = False
Set rngMyRange = Range("JanRangeTotal")
Sheets(Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", _
"Dec")).Select
Sheets("Jan").Activate
For Each cell In rngMyRange.Cells
cell.Select
If cell.Value = "" Then GoTo DOTHETHING
Next cell
DOTHETHING:
Selection.Resize(1812).Select
Selection.EntireRow.Hidden = True
Range("C7").Select
Application.CutCopyMode = False
Sheets("PO to Complete").Select
End Sub
但它不会在其他图纸上执行行隐藏命令。有没有办法让我的工作更快
干杯
扣篮为什么要使用select命令?这很慢 我也不认为它是工作,因为你认为它是。我不认为可以通过跨图纸进行选择来隐藏行,这就是为什么这样做失败的原因 为什么不试着在每张纸上声明范围,并使用类似的方法在纸上循环
application.screenupdating = false
dim ws as worksheet
for each ws in thisworkbook.sheets
' Your Code here
next ws
使用声明的范围会更快。选择单元格没有意义,除非是为了视觉效果,我假设不是因为你正在关闭屏幕更新谢谢提示!我在每个选项卡上声明了范围,并基本上为每个12个月的工作表重复了代码的第一部分。它现在在3秒内运行!