我需要编写一个宏,它将在重复值之后添加一个空行(可以有两个以上的重复值)。
一旦我启动代码,它就会运行并且永远不会结束。
我不确定我应该在这里更改什么才能做到这一点。
到目前为止,我尝试过这样的宏,但它陷入了do while循环。
Sub dup()
Dim rw As Long
Dim val1, val2 As String
Sheets(4).Activate
Range("C3").Select
For rw = 3 To Range("C" & Rows.Count).End(xlUp).Row
val1 = Range("C" & rw).Value
val2 = Range("C" & rw + 1).Value
Do While IsNull(Range("C" & rw)) = False
If val2 = val1 Then
Rows(rw + 1).Insert Shift:=xlDown
Else
If val1 = val2 Then
End If
End If
Loop
Next
End Sub
您需要使用反向循环。还要避免使用
.Select/.Activate
。您可能想查看如何避免在 Excel VBA 中使用 Select。
直接处理物体。这是你正在尝试的吗(未经测试)?
Option Explicit
Sub dup()
Dim ws As Worksheet
'~~> Set this to the relevant worksheet
Set ws = ThisWorkbook.Sheets("Sheet4")
Dim lRow As Long
Dim i As Long
With ws
'~~> Find last row in Column C
lRow = .Range("C" & .Rows.Count).End(xlUp).Row
'~~> Reverse Loop
For i = lRow To 3 Step -1
'~~> Check for duplicate. If found, insert row
If .Range("C" & i).Value = .Range("C" & i - 1).Value Then .Rows(i).Insert
Next i
End With
End Sub