最近在用VBA编写个小程序,遇到一个奇怪的问题。

    如果使用 Sheets(“原始数据页”).Range(“A3:L3”) 就正确

    如果使用 Sheets(“原始数据页”).Range(Cells(3,1),Cells(3,12)) 就会出现 1004错误

    按理说Range的两种表达方式是一个意思,为什么会出现不同的结果呢?

    在网上找了很久,发现不少人遇到这个问题,但回答都解决不了我的问题。最后,总算碰到高手了,得到以下答案。

    Sheets(“原始数据页”).Range(Sheets(“原始数据页”).Cells(3,1),Sheets(“原始数据页”).Cells(3,12))

    原来Range对象如果使用Cells的话,它不会自动约束Cells所在的Sheet,在跨Sheet操作时,要么先Select相应的Sheet,要么指定Cells所属的Sheet,否者Range所属Sheet和Cells所属Sheet不一致就会出现1004错误。