我正在试图找出一个动态范围,它将从每个循环的活动单元格中选择一个范围。例如,如果在my中为每个单元循环选择了单元格A2,则循环中的范围为A2:A20,并且它包含“IP”,它将选择范围A2:M2,删除内容,并移动所有值下面,A3:M20,最多填满空的细胞。
Sub deletewirelessdevice()
Dim rng As Range
Dim wksSource As Worksheet
Set wksSource = ActiveWorkbook.Sheets("dt-attext")
Set rng = wksSource.Range("A2:A500")
For Each Cell In rng
If InStr(1, ActiveSheet.Range(ActiveCell).Value, "IP") > 0 Then
Range(ActiveCell, "M" & ActiveCell.Row).Select.Delete Shift:=xlUp
Next Cell
End Sub
我不确定选择和删除是否存在错误,因为由于没有编译错误而导致Next无法运行代码。有一个匹配,所以我不知道是什么问题。欢迎任何建议。
答案 0 :(得分:2)
您的代码存在许多问题,因此我对其进行了调整并推断出您的意图。这应该可行,但是请阅读上面的注释以及下次如何处理它的一些指示
Public Sub deletewirelessdevice()
Dim DelRng As Range
Dim ColOffset As Long
With ActiveWorkbook.Sheets("dt-attext")
ColOffset = Range("M" & 1).Column - 1
For Each cell In .Range("A2:A500")
If InStr(cell.Value2, "IP") Then
If DelRng Is Nothing Then
Set DelRng = Range(cell, cell.Offset(0, ColOffset))
Else
Set DelRng = Union(DelRng, Range(cell, cell.Offset(0, ColOffset)))
End If
End If
Next cell
If Not DelRng Is Nothing Then DelRng.Delete Shift:=xlUp
End With
End Sub