我正在使用开发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 需要对象
我想要做的是调整选择的大小以包含更多行,然后删除它们,但它没有用。 如果需要进一步的信息,请告诉我。非常感谢你的帮助。
答案 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