声明范围

时间:2015-02-09 21:45:14

标签: excel vba

我接近疯了!我不知何故真的在努力让范围对象正确。如果我输入此内容,我会收到一条错误消息:

Dim ValidationRange As Range    
Set ValidationRange = Tabelle3.Range(Cells(1, 1), Cells(4, 1))

但如果它进入这样的范围,一切都很好:

Dim ValidationRange As Range    
Set ValidationRange = Tabelle3.Range("a1:a4")

我做错了什么?

3 个答案:

答案 0 :(得分:3)

当您宣布像这样的范围

时会发生什么
Set ValidationRange = Tabelle3.Range(Cells(1, 1), Cells(4, 1))

真的是这个

Set ValidationRange = Tabelle3.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(4, 1))

因为cells对象就像Range个对象,除了Range可以包含多个单元格,cells只能是一个。无论如何,它们都是针对父对象(工作表)声明的。如果未指定,则假定为ActiveSheet。如果Tabelle3不是您当前的活动工作表,则会出现问题,因为Tabelle3中的范围不能包含其他工作表中的单元格。这没有意义。

这样做是因为Cells的父级与Range的父级相同:

With Tabelle3
  .Range(.Cells(1, 1), .Cells(4, 1))
End With

答案 1 :(得分:0)

尝试在不使用Tabelle3的情况下使用您的代码。在您的范围声明之前。

Dim ValidationRange As Range
Set ValidationRange = Range(Cells(1, 1), Cells(4, 1))

为我工作。

答案 2 :(得分:-1)

您将范围引用到表格而不是单元格。试试这个:

With Tabelle3
  .Range(Cells(1, 1), Cells(4, 1))
End With