为什么我不能使用单个“单元”参考作为“范围”参数

这个问题: 从一个工作簿复制到另一个使我意识到,虽然我知道如何解决所描述的问题,但我不知道为什么会导致错误。

Range("A1").Select是好的。

Range(Cells(1,1),Cells(1,1)).Select是好的。

Range(Cells(1,1).Address).Select 。select是好的。

Range(Cells(1,1)).Select返回一个Application定义的或Object定义的错误

这是一个错误,还是有一个更深的原因,我不明白?

扩大一点:

范围(“A1”)。select是好的。

相当简单,至于为什么。

范围(单元格(1,1),单元格(1,1))。select是好的。

是的,这最终相当于Range(A1:A1)

范围(单元格(1,1)。地址)。select是好的。

这最终相当于Range("$A$1")这是因为.Address部分parsing为单元格的地址。

Range(Cells(1,1))。Select返回一个Application定义的或Object定义的错误

该错误是因为VB试图解决这个问题,但不能,因为它只是一个单元格(和Range是多个单元格(或至less是同一个单元格列出两次,如上面的第二个例子))。 但是,不像第三个例子,没有什么东西告诉VBA使用Cells(1,1)的地址,这只是对单元格的一般参考…因此,VB不知道如何处理它。 ..你想Cells(1,1).Font ,或.Value ,或者.Row等等…

我希望有一点帮助,但是请查看@Soulfire提供的链接,如果还不清楚,可以在Google(Google)附近详细了解Range()

单元格(1,1)评估的是该单元格中的值。

它相当于Cells(1,1).Value

你会有与Range(Range(“A1”))相同的问题