我接近疯了!我不知何故真的在努力让范围对象正确。如果我输入此内容,我会收到一条错误消息:
Dim ValidationRange As Range
Set ValidationRange = Tabelle3.Range(Cells(1, 1), Cells(4, 1))
但如果它进入这样的范围,一切都很好:
Dim ValidationRange As Range
Set ValidationRange = Tabelle3.Range("a1:a4")
我做错了什么?
答案 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