【发布时间】:2022-04-08 03:49:20
【问题描述】:
我是编码新手。这个宏运行缓慢,我希望有人可以帮我清理它。在此先感谢您的帮助。
我开发了代码来更新我公司的“呼叫路由器”工作表,其中包含从外部来源购买的新线索。潜在客户以原始格式在名为 Fresh Agents Leads 的工作表中提供给我们。一旦“新代理线索”表被复制到包含“呼叫路由器”工作表的“MSS 呼叫路由主列表”文件中,宏会减少原始数据,以便消除我们不使用的部分。然后它重新格式化剩余的内容以匹配旧呼叫路由器工作表的格式并将两者合并。然后它将新的主表重命名为呼叫路由器。
代码旨在从包含新鲜代理潜在客户表的工作簿中开始。指示用户在执行代码之前在桌面上打开 Fresh Agents Leads File 和 MSS Call Routing Master List。
Sheets("Fresh Agent Leads").Select
Sheets("Fresh Agent Leads").Copy After:=Workbooks( _
"MSS Call Routing Master List.xlsx").Sheets(1)
Columns("F:F").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1").Select
Selection.Copy
Columns("F:F").Select
ActiveSheet.Paste
Columns("A:A").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Columns("E:E").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns("G:S").Select
Selection.Delete Shift:=xlToLeft
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Columns("C:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C1").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RIGHT(RC[1],4))"
Range("C1").Select
Selection.AutoFill Destination:=Range("C1:C1048575")
Range("C1:C1048575").Select
Sheets("Call Router").Select
Rows("1:1").Select
Selection.Copy
Sheets("Fresh Agent Leads").Select
Rows("1:1").Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
Application.Run "PERSONAL.xlsb!MergeIdenticalWorksheets"
Columns("C:C").Select
Selection.NumberFormat = "0000"
Range("A:A,B:B,F:F").Select
Range("F1").Activate
Selection.ColumnWidth = 14
Columns("E:E").Select
Selection.ColumnWidth = 25
Columns("C:C").Select
Selection.ColumnWidth = 8.29
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Rows("1:1").Select
Selection.RowHeight = 30
With Selection
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
Columns("D:D").Select
Selection.EntireColumn.Hidden = True
Range("E2").Select
ActiveWindow.FreezePanes = True
Sheets(Array("Call Router", "Fresh Agent Leads")).Select
Sheets("Call Router").Activate
ActiveWindow.SelectedSheets.Delete
Sheets("Master").Select
Sheets("Master").Name = "Call Router"
Range("C23").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveWorkbook.Save
End Sub
【问题讨论】:
-
你试过看看这条线有多贵吗? Selection.AutoFill Destination:=Range("C1:C1048575")
-
我同意 J Trana 的观点。但是你的大部分代码都需要改进。我没有看到你的
Variable声明,但我猜你没有声明。此外,您使用Select过多会影响代码的速度。尝试适应here 所讨论的关于避免选择和提高代码速度的内容。如果您遇到无法理解的事情,请更新您的问题并粘贴您的代码、错误和/或遇到的困难。 -
一个更有代表性的标题会有很大帮助。
-
L42 是对的。此外,您要避免引用 ActiveSheet 对象。要么用
ThisWorkBook.Sheets("SheetNameHere")准确地告诉它去哪里,要么如果你在循环,首先声明它。就自动填充部分而言,您是否尝试过查找如何找到最后一行?ThisWorkbook.Sheets("Reference").Range("A:A").Rows.Count.End(xlUp).Row而不是最后一行可能会加快速度。 -
目前尚不清楚此代码是在找到
Fresh Agent Leads的工作簿中执行,还是在MSS Call Routing Master List工作簿中执行。我可以在一开始看到您将 FAL 复制到另一个工作簿,但不清楚这些操作是在源还是目标中执行(即使您说您在处理它们,我们需要在哪个工作簿上工作' 正在发生)。 ;)