VBA运行时错误1004 – object_Global的范围失败 – IF公式

我已经将下面的公式插入到VBA中,但是VBA运行时错误1004 – “object_Global范围失败” – 不知道我错过了什么。

公式在Excel中工作,但不是当我翻译到VBA时。

Range("AF") ="=IF(OR(AND(LEN('ACCOUNT DATA'!V2)=8,LEFT('ACCOUNT DATA'!V2,2)=""60""),LEFT('ACCOUNT DATA'!V2,3)=""CSN""),""CDR Created"",IF(OR(AND(LEN('ACCOUNT DATA'!X2)=8,LEFT('ACCOUNT DATA'!X2,2)=""60""),LEFT('ACCOUNT DATA'!X2,3)=""CSN""),""CDR Created"",IF(OR(AND(LEN('ACCOUNT DATA'!Y2)=8,LEFT('ACCOUNT DATA'!Y2,2)=""60""),LEFT('ACCOUNT DATA'!Y2,3)=""CSN""),""CDR Created"",""CDR Pending"")))" 

正确的公式:我错过了我的范围内的行号…所以AF2而不是AF:

Range("AF2") ="=IF(OR(AND(LEN('ACCOUNT DATA'!V2)=8,LEFT('ACCOUNT DATA'!V2,2)=""60""),LEFT('ACCOUNT DATA'!V2,3)=""CSN""),""CDR Created"",IF(OR(AND(LEN('ACCOUNT DATA'!X2)=8,LEFT('ACCOUNT DATA'!X2,2)=""60""),LEFT('ACCOUNT DATA'!X2,3)=""CSN""),""CDR Created"",IF(OR(AND(LEN('ACCOUNT DATA'!Y2)=8,LEFT('ACCOUNT DATA'!Y2,2)=""60""),LEFT('ACCOUNT DATA'!Y2,3)=""CSN""),""CDR Created"",""CDR Pending"")))"

这个错误通常意味着你隐式地指的是你不应该在的活动工作表,例如:

 Sheet2.Activate Sheet1.Range(Cells(1,1), Cells(2,2)) = 42 'boom: "Cells" is referring to Sheet2 

在这里你得到它,因为Range("AF")对Excel没有多大意义。 试试这个:

 [ActiveSheet.]Range("AF:AF").Formula = "..." 

你可能想要计算实际的行数,因为这会把公式放在列AF的每一行上 ,我怀疑是你真正想要的。

请注意,您应该使用适当的Worksheet对象来限定Range调用,并且由于您要指定公式 ,所以应该明确地这样说 – Range默认属性指向它的 ,所以您将利用相当多的隐式行为为了这个代码的工作:最好尽可能的明确