我已经将下面的公式插入到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"")))"
答案 0 :(得分:2)
该错误通常意味着您隐含地将活动表引用到您不应该的地方,例如:
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 的每一行上,我怀疑你是的真正想。
注意,您应该使用正确的Range
对象来限定Worksheet
来电,并且因为您要分配公式,所以您应该明确说明 - {{1 } 默认属性指向其值,因此您正在利用相当多的隐式行为来使该代码正常工作:尽可能最好地制作 >显式