为什么我不能使用单个" Cells"引用为"范围"参数

时间:2015-10-08 17:28:49

标签: excel vba excel-vba

这个问题:Copy from one workbook to another让我意识到虽然我知道如何解决所描述的问题,但我并不知道它为什么会导致错误。

Range("A1").Select没问题。

Range(Cells(1,1),Cells(1,1)).Select没问题。

Range(Cells(1,1).Address).Select没问题。

Range(Cells(1,1)).Select返回应用程序定义或对象定义错误

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

2 个答案:

答案 0 :(得分:2)

单元格(1,1)计算该单元格中的内容值。

相当于Cells(1,1).Value

你会遇到同样的问题(范围(" A1"))。选择

答案 1 :(得分:2)

扩展一点:

  

范围(" A1")。选择没问题。

非常直截了当的原因。

  

范围(单元格(1,1),单元格(1,1))。选择正常。

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

  

范围(Cells(1,1).Address)。选择没问题。

这最终等同于Range("$A$1")这是因为.Address部分解析为单元格的地址。

  

Range(Cells(1,1))。Select返回一个Application defined或Object defined error

错误是因为VB试图解决这个问题,但不能解决这个问题,因为它只是一个单元格(而Range是多个单元格(或至少列出两次相同的单元格,作为上面的第二个例子))。但是,与第三个例子不同的是,VBA没有告诉我使用Cells(1,1)的地址,这只是对一般细胞的引用...因此,VB并不是这样的知道该怎么做真的......你想要Cells(1,1).Font.Value,还是.Row等......

我希望这有点帮助,但请查看@Soulfire提供的链接,如果目前还不清楚,可以通过Google了解Range()的更多详情。