如何解决在值的第一个实例上插入行
我试图在第一个实例中插入一行,其中 y 列中的值大于 60。只有一行。
我做了一个循环,为 60 以上的任何内容插入多行,但我不需要这个。
难以改变这一点
这是我得到的
Dim Col As Variant
Dim BlankRows As Long
Dim LastRow As Long
Dim i As Long
Dim StartRow As Long
Col = "Y"
StartRow = 1
BlankRows = 1
LastRow = Cells(Rows.Count,Col).End(xlUp).Row
Application.ScreenUpdating = False
With ActiveSheet
For i = LastRow To StartRow + 1 Step -1
If .Cells(i,Col) > 60 Then
.Cells(i,Col).EntireRow.Insert shift:=xlDown
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
解决方法
一旦 GoTo
完成,您可以使用 true
跳过以下迭代。
Dim Col As Variant
Dim BlankRows As Long
Dim LastRow As Long
Dim i As Long
Dim StartRow As Long
Col = "Y"
StartRow = 1
BlankRows = 1
LastRow = Cells(Rows.Count,Col).End(xlUp).Row
Application.ScreenUpdating = False
With ActiveSheet
For i = LastRow To StartRow + 1 Step -1
If .Cells(i,Col) > 60 Then
.Cells(i,Col).EntireRow.Insert shift:=xlDown
Goto: Close
End If
Next i
End With
Close
Application.ScreenUpdating = True
End Sub
,
您可以为此使用 Do 循环(2 个搜索方向变体):
Option Explicit
Sub InsertRowSearchDown()
Dim out As Boolean,cl As Range
Set cl = ActiveSheet.Range("Y1") 'start cell
Do Until out 'initially out=False
If cl > 60 Then
cl.EntireRow.Insert
out = True
Else
Set cl = cl.Offset(1) 'move DOWN to the next row
out = IsEmpty(cl)
End If
Loop
End Sub
Sub InsertRowSearchUp()
Dim out As Boolean,cl As Range
Set cl = ActiveSheet.Range("Y" & Rows.Count).End(xlUp) 'start cell
Do Until out 'initially out=False
If cl > 60 Then
cl.EntireRow.Insert
out = True
Else
If cl.Row = 1 Then
out = True
Else
Set cl = cl.Offset(-1) 'move UP to the previous row
End If
End If
Loop
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。