声明一个范围

我快要疯了! 我不知何故真的很难得到范围对象。 如果我input这个,我总是会收到错误信息:

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

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

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

我究竟做错了什么?

当你像这样宣布你的范围时发生了什么

 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 

尝试使用您的代码,而不使用Tabelle3。 在范围说明之前。

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

为我工作。

你把范围引用到表格中,而不是单元格。 尝试这个:

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