我得到的錯誤與Dennis做的here相同,但他提供的答案只是說刪除某些模塊或重命名它們。但是,我只有一個模塊,重命名它對我沒有任何幫助。我甚至嘗試製作一個全新的工作簿,並將宏複製到新的開始,但它也沒有做任何事情。 當我在錄製它後運行宏時,它也給我一個「應用程序定義的或對象定義的」錯誤。這個公式本身完全可以在宏的外面工作,但我確實需要它作爲宏的一部分。由於語法錯誤(記錄時)和對象定義的錯誤(運行時),無法運行VBA
這裏是記錄出類拔萃,這是在我的宏是給我的錯誤行:
ActiveCell.FormulaR1C1 = _
"=IF(COUNTA(RC[-15]:RC[-2])=2,RC[-14],IF(COUNTA(RC[-15]:RC[-2])=4,CONCATENATE(RC[-14],"":"",RC[-12]),IF(COUNTA(RC[-15]:RC[-2])=6,CONCATENATE(RC[-14],"":"",RC[-12],"" - "",RC[-10]),IF(COUNTA(RC[-15]:RC[-2])=8,CONCATENATE(RC[-14],"":"",RC[-12],"":"",RC[-10],"" - "",RC[-8]),IF(COUNTA(RC[-15]:RC[-2])=10,CONCATENATE(RC[-14],"":"",RC[-12],"":"",RC[-10],"":"",RC[-8],"" - """ & _
","""")))))"
它有一個是,它會激活細胞Range("Q3").Select
之前。此外,如果您查看它與原始公式記錄的內容,可以看到它離開了K3)
或RC[-6]),
。我試圖添加它,但它沒有幫助。
原配方:
=IF(COUNTA(B3:O3)=2,C3,IF(COUNTA(B3:O3)=4,CONCATENATE(C3,":",E3),IF(COUNTA(B3:O3)=6,CONCATENATE(C3,":",E3," - ",G3),IF(COUNTA(B3:O3)=8,CONCATENATE(C3,":",E3,":",G3," - ",I3),IF(COUNTA(B3:O3)=10,CONCATENATE(C3,":",E3,":",G3,":",I3," - ",K3),"")))))
我也試過公式沒有concatenate
,但它並沒有幫助。這下面是:
ActiveCell.FormulaR1C1 = _
"=IF(COUNTA(RC[-15]:RC[-2])=2,RC[-14],IF(COUNTA(RC[-15]:RC[-2])=4,RC[-14]&"":""&RC[-12],IF(COUNTA(RC[-15]:RC[-2])=6,RC[-14]&"":""&RC[-12]&"" - ""&RC[-10],IF(COUNTA(RC[-15]:RC[-2])=8,RC[-14]&"":""&RC[-12]&"":""&RC[-10]&"" - ""&RC[-8]),IF(COUNTA(RC[-15]:RC[-2])=10,RC[-14]&"":""&RC[-12]&"":""&RC[-10]&"":""&RC[-8]&"" - ""&RC[-6],"""")))))"
編輯:下面是代碼的正上方,而P3公式正常工作:
Range("P3").Select
ActiveCell.FormulaR1C1 = _
"=INDEX(RC[-14]:RC[-1],1,IF(COUNT(RC[-14]:RC[-1])=1,COUNT(RC[-14]:RC[-1]),COUNT(RC[-14]:RC[-1])*2-1))"
Range("P3").Select
Range("P3").AutoFill Destination:=Range("P3:P" & LastRow)
Range("Q3").Select
ActiveCell.FormulaR1C1 = _
"=IF(COUNTA(RC[-15]:RC[-2])=2,RC[-14],IF(COUNTA(RC[-15]:RC[-2])=4,RC[-14]&"":""&RC[-12],IF(COUNTA(RC[-15]:RC[-2])=6,RC[-14]&"":""&RC[-12]&"" - ""&RC[-10],IF(COUNTA(RC[-15]:RC[-2])=8,RC[-14]&"":""&RC[-12]&"":""&RC[-10]&"" - ""&RC[-8]),IF(COUNTA(RC[-15]:RC[-2])=10,RC[-14]&"":""&RC[-12]&"":""&RC[-10]&"":""&RC[-8]&"" - ""&RC[-6],"""")))))"
Range("Q3").Select
Range("Q3").AutoFill Destination:=Range("Q3:Q" & LastRow)
我使用Microsoft Office 2013,並且有一個可以儘快UTILITES附加,這從來沒有造成我以前的問題,如果這有所幫助。
隨機猜測,但不要使用'activecell'。 – findwindow
我不知道該使用什麼來插入公式。我總是記錄它,它總是使用它。 – Excellerator
不要錄製。或者編輯記錄〜_ ^而不是'activecell',做'工作簿。worksheet.range'。編輯:對象定義的錯誤意味着對象不好。在這種情況下,對象是'activecell',所以你想指定它。 – findwindow