Excel范围奇怪行为的特殊单元法
我编写了一个宏,使用excel range对象的SpecialCells方法查找特定范围内的空白单元格。 当我试图执行下面的代码时,我得到一个异常“找不到单元格” 步骤:-Excel范围奇怪行为的特殊单元法,excel,vba,Excel,Vba,我编写了一个宏,使用excel range对象的SpecialCells方法查找特定范围内的空白单元格。 当我试图执行下面的代码时,我得到一个异常“找不到单元格” 步骤:- 打开一个新的Excel实例 按ALT+F11/打开VBE 插入新模块 粘贴上述代码,并按上述规定运行测试宏 收到的输出: 运行时错误“1004”。没有发现细胞 预期输出: $A$1:$D$4 案例1: 现在如果我对A1单元做任何操作。调用test()宏,则不会引发异常 收到的输出: $A$1 预期输出: $A$1:$D$4
注意:使用新的excel实例执行每个案例。原因是
SpecialCells
“查看”返回范围时的UsedRange
因此,在未使用的工作表上使用SpecialCells
将返回运行时错误“1004”。未找到单元格。
(作为备用,请始终使用特殊单元格的错误处理)
当您更改单元格A1时,它将成为图纸UsedRange
,因此案例1返回“A1”
下面的代码查找返回范围(“A1:D4”)。特殊单元格(xlCellTypeBlanks)用于
A1:A4
A1:A4
.SpecialCells
使用工作表的使用范围,而不是特定单元格,除非特定单元格在使用范围内
在一张全新的工作表上测试Specialcells
,会出现错误,因为usedrange仅为$A$1。如果$A$1是彩色的,那么您将不会像上面案例2中预期的那样得到错误
您必须极其小心地使用特殊单元。这里有一个例子,它不会给你一个新的工作表上的错误
Sub Sample()
If ActiveSheet.UsedRange.Column > 1 Or ActiveSheet.UsedRange.Row > 1 Then
Debug.Print ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Address
End If
End Sub
现在在D5单元格中键入一些内容。说“废话”
现在运行此代码
Sub Sample()
Debug.Print Sheet1.Range("A1:D4").SpecialCells(xlCellTypeBlanks).Address
End Sub
您会注意到,这将起作用,因为范围在UsedRange地址内。+1对于一个描述良好的问题:)
Sub Sample()
If ActiveSheet.UsedRange.Column > 1 Or ActiveSheet.UsedRange.Row > 1 Then
Debug.Print ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Address
End If
End Sub
Sub Sample()
Debug.Print Sheet1.Range("A1:D4").SpecialCells(xlCellTypeBlanks).Address
End Sub