自动填充目标创建更长的运行时间

时间:2015-08-28 20:12:31

标签: excel vba excel-vba autofill

我使用以下宏将文本转换为正确的格式。我选择一个单元格并运行宏。假设列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

1 个答案:

答案 0 :(得分:0)

假设您的数据在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的情况下自动填充可能更快更容易。