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
的默认属性指向它的值 ,所以您将利用相当多的隐式行为为了这个代码的工作:最好尽可能的明确 。