每个循环的动态范围

时间:2017-11-20 11:15:00

标签: excel vba excel-vba

我正在试图找出一个动态范围,它将从每个循环的活动单元格中选择一个范围。例如,如果在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无法运行代码。有一个匹配,所以我不知道是什么问题。欢迎任何建议。

1 个答案:

答案 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