Excel中VBA编程range为空的问题。

Excel中VBA编程range为空的问题。Setrg1=Workbooks(dirname).Sheets(i).UsedRangeWithWorkbooks(dirn... Excel中VBA编程range为空的问题。
Set rg1 = Workbooks(dirname).Sheets(i).UsedRange
With Workbooks(dirname).Sheets(i)
Set rg1 = Workbooks(dirname).Sheets(i).UsedRange
With Workbooks(dirname).Sheets(i)
.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
.Columns(1).SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
rg1.Copy rg
上面是代码,请教大神 ,经过第5和第6句的删除后,有一个sheet的range 为空了,执行 rg1.Copy rg 会出错,在这儿我试了 IsNull IsEmpty IsNothing等判别方法,都认为rg1为真,试了Count之类的方法,又是无法读取到对象(rg1),请教一下,如何在这里判别 rg1 为空。
展开
 我来答
尘宇心
2017-11-09 · TA获得超过762个赞
知道小有建树答主
回答量:1857
采纳率:53%
帮助的人:360万
展开全部
你的1、2两句和3、4两句有区别吗?为什么要重复创建?
你5、6两句既然是删除,为什么要还使用原来的区域进行复制呢?

建议1、2两句删除掉,3、4两句剪切插入到".Columns(1).SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete "后面。
如果怕出错建议添加on error resume next 语句。
更多追问追答
追问
刚才不小心第1、2句写重复了,
我这是一个循环,是将多个sheet复制到一个sheet里的,将经过删除空行和第一个不是数字的行之后的sheet复制到一个sheet里面。
我这就想知道如何判别range 为空
追答
.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
.Columns(1).SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
上面两句只是为了达到删除目的,如果不存在对象直接用
On Error Resume Next '过滤掉相对应的语句操作
Dim rg1 As Object
On Error Resume Next
Set rg1 = Workbooks(dirname).Sheets("sheet1").UsedRange
With Workbooks(dirname).Sheets("sheet1")
.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
.Columns(1).SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
End With
rg1.Copy
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式