范围声明 - 对象定义错误

时间:2016-01-25 15:15:28

标签: excel vba excel-vba

下面是我的代码的一部分,我在其中声明范围并给它们命名。我的工作簿中有两张纸,#34; ConsoSheet"和"重复"。

我有5个范围要声明,前四个很好。然而最后一个" Data_Temp"给我带来了一些麻烦。我不断收到错误"应用程序定义或对象定义的错误"。

你能明白为什么吗?

Dim DataOut As Range
   Dim crit As Range
   Dim LengthList As Range
   Dim Data As Range
   Dim Data_Temp As Range

   Set DataOut = Sheets("Duplicated").Range("=Duplicated!$I$1:$O$1")
   ActiveWorkbook.Names.Add Name:="DataOut", RefersTo:=DataOut

   Set crit = Sheets("Duplicated").Range("=Duplicated!$R$1:$R$2")
   ActiveWorkbook.Names.Add Name:="crit", RefersTo:=crit

   Set LengthList = Sheets("ConsoSheet").Range("=ConsoSheet!$J$1")
   ActiveWorkbook.Names.Add Name:="LengthList", RefersTo:=LengthList

   Set Data = Sheets("ConsoSheet").Range("=OFFSET(ConsoSheet!$A$1,0,0,COUNTA(ConsoSheet!$A:$A),7)")
   ActiveWorkbook.Names.Add Name:="Data", RefersTo:=Data

   Set Data_Temp = Sheets("Duplicated").Range("=OFFSET(Duplicated!$I$1;0;0;COUNTA(Duplicated!$I:$I);7)")
   ActiveWorkbook.Names.Add Name:="Data_Temp", RefersTo:=Data_Temp

我尝试更改此特定范围的名称,但问题保持不变。

1 个答案:

答案 0 :(得分:0)

这一行:

 Set DataOut = Sheets("Duplicated").Range("=Duplicated!$I$1:$O$1")

需要:

 Set DataOut = Sheets("Duplicated").Range("I1:O1")

您正在将vba与工作表公式混合使用。

这一行:

Set Data = Sheets("ConsoSheet").Range("=OFFSET(ConsoSheet!$A$1,0,0,COUNTA(ConsoSheet!$A:$A),7)")

到此:

Set Data = Sheets("ConsoSheet").Range(Sheets("ConsoSheet").Range("A1"),Sheets("ConsoSheet").Range("G1").End(xlDown))

您需要更改所有行以解决上述问题。