自动填充目标创建更长的运行时间
Posted
技术标签:
【中文标题】自动填充目标创建更长的运行时间【英文标题】:Autofill destination creating longer runtime 【发布时间】:2015-08-28 20:12:30 【问题描述】:我使用以下宏将文本转换为正确的格式。我选择一个单元格并运行宏。假设 A 列包含 3 个填充行(比如 A1、A2 和 A3,我想将公式 PROPER 应用于 B1、B2 和 B3 列,B1 是我的活动单元格。当我运行宏时,自动填充需要很长时间,因为在选择 B1 到 B3 时,宏考虑的行数直到工作表的末尾,而不是 A 列中的行数。请建议我如何解决有关自动填充目标的问题。
Sub Macro7()
'
' Macro7 Macro
'
' Keyboard Shortcut: Ctrl+Shift+V
'
ActiveCell.FormulaR1C1 = "=PROPER(RC[-1])"
ActiveCell.Select
**Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))**
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(0, -1).Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
【问题讨论】:
你怎么用宏?为什么不直接在B列的单元格中输入? 【参考方案1】:假设您的数据从 A1 开始,并且您想将公式放在 B 列中,您可以使用以下内容(注意删除 .Select
)
Sub macro7()
Dim lastRow as integer
lastRow = Activesheet.usedrange.rows.count
Range("B1").Formular1c1 = "=Proper(RC[-1])"
Range("B1").AutoFill Destination:=Range(Cells(1,2),Cells(lastRow,2))
Range(Cells(1,2),Cells(lastRow,2)).Copy
Range(Cells(1,2),Cells(lastRow,2)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range(Cells(1,1),cells(lastRow,1)).ClearContents
End sub
但是,如上所述,您为什么要将它作为宏?除非要添加更多内容,否则仅在单元格中使用 =Proper(a1)
并在不使用 VBA 的情况下自动填充可能会更快更容易。
【讨论】:
Range("B1").AutoFill Destination:=Range(Cells(1,2),Cells(lastRow,2)) 在调试时出错。 它给你什么错误?lastRow
是否正常工作,取决于您的最后一个单元格,它可能正在尝试获取 Excel 中的最后一行...以上是关于自动填充目标创建更长的运行时间的主要内容,如果未能解决你的问题,请参考以下文章