从录制的宏中删除所有 "Selections"

Remove all the "Selections" from a recorded Macro

我记录了这个,然后添加了 LR = LastRow 使其动态化,但我不知道如何删除继续进行的所有选择

此外,它们都做同样的事情,但是是写数组的一种方式 better 然后是另一种方式,即 faster,更多 stable...

谢谢

 Selection.FormulaArray = "=ISNUMBER(MATCH(RC[-5]&RC[-6],R1C1:R" & LR & "C1 & R1C2:R" & LR & "C2,0))"

 Selection.FormulaArray = "=ISNUMBER(MATCH(B1&A1,$A:$A$" & LR & " & $B:$B$" & LR & ",0))"

录制宏

Sub Winding()
Dim ws As Worksheet
Dim Rng As Range
Dim LR As Long

 Set ws = Sheets("Unpivot_RegistrationData")
     LR = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Set Rng = ws.Range("G1").Resize(LR, 1)

Range("G1").Select
       Selection.FormulaArray = "=ISNUMBER(MATCH(B1&A1,$A:$A$" & LR & " & $B:$B$" & LR & ",0))"
       Selection.AutoFill Destination:=Rng, Type:=xlFillDefault
End Sub

首先,对 A1R1C1 样式的偏好应该是由构建公式字符串的难易程度决定的。性能或稳定性没有差异

要删除 Selection 试试这个
请注意,我已删除 AutoFill,并一步将公式应用于整个范围。

Sub Winding()
    Dim Rng As Range
    Dim LR As Long

    With Worksheets("Unpivot_RegistrationData")
        LR = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set Rng = .Range("G1:G" & LR)
    End With

    Rng.Cells(1, 1).FormulaArray = _
      "=ISNUMBER(MATCH(B1&A1,$A:$A$" & LR & " & $B:$B$" & LR & ",0))"
    Rng.Cells(1, 1).AutoFill Destination:=Rng, Type:=xlFillDefault
End Sub