excel vba range.resize错误1004(调整非连续区域的大小)

时间:2017-11-30 03:21:34

标签: excel vba excel-vba

我正在使用开发vba excel来完成从工作表中删除多个单元格的简单任务。

代码首先选择零作为值的单元格:(工作正常)

Sub SelectRange()

Dim my_range1 As Range

For Each cell In Range("B17:AR17")

    If cell.Value = 0 Then

        If my_range1 Is Nothing Then

            Set my_range1 = cell

        Else

            Set my_range1 = Union(my_range1, cell)

        End If

    End If

Next

然后我想将选择偏移到第一行并从第一行中选择更多行:(问题代码)

my_range1.Offset(-16).Resize(16).Select

这行代码为我提供了错误1004

我只用偏移测试了代码:(工作正常)

my_range1.Offset(-16).select

我仅使用调整大小进一步测试了代码:(问题代码,错误1004

my_range1.resize(16).select

我进一步尝试使用set,但它仍然给了我错误1004

Set my_range1 = my_range1.Resize(16).Select

我试过debug.print my_range1.address给出以下单元格$ B $ 17:$ H $ 17,$ K $ 17:$ L $ 17,$ O $ 17,$ R $ 17:$ AR $ 17 但是debug.print my_range1.value给出错误13 类型不匹配

我尝试使用提供的代码: Set my_range1 = Union(my_range1, cell.Offset(-16).Resize(16)) 它说错误424 需要对象

我想要做的是调整选择的大小以包含更多行,然后删除它们,但它没有用。 如果需要进一步的信息,请告诉我。非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您不能Resize非连续的单元格,因此一个简单的解决方法是在创建Union之前调整单个单元格的大小:

Sub SelectRange()
    Dim my_range1 As Range
    Dim cell As Range
    For Each cell In Range("B17:AR17")
        If cell.Value = 0 Then
            If my_range1 Is Nothing Then
                Set my_range1 = cell.Offset(-16).Resize(16)    
            Else
                Set my_range1 = Union(my_range1, cell.Offset(-16).Resize(16))    
            End If
        End If
    Next