![將字串輸出到單元格時發生錯誤](https://rvso.com/image/1415043/%E5%B0%87%E5%AD%97%E4%B8%B2%E8%BC%B8%E5%87%BA%E5%88%B0%E5%96%AE%E5%85%83%E6%A0%BC%E6%99%82%E7%99%BC%E7%94%9F%E9%8C%AF%E8%AA%A4.png)
我正在使用 vba 巨集來自動化 Excel 電子表格的一部分。以下行不斷給我運行時錯誤 1004# 應用程式或物件定義的錯誤
Sheets("Material").Last.Offset(0, 1).Value = "=SUMIF(MainTable[0],AG12,MainTable[Cost])"
使用手錶我知道等式的左側引用了正確的單元格。我假設錯誤位於寫入單元格的右側字串中 - 我想可能是我的表格引用?其餘公式作為字串都寫得很好,並且不包含表引用。
答案1
我假設錯誤位於程式碼中,因為當我收到運行時錯誤時,給定單元格沒有輸出。如果將公式寫入單元格,並且會產生彈出窗口,指出“我們發現此公式有問題...”,則實際上會出現問題。類型錯誤。就我而言,我的程式碼將範圍設定到一個名為 MainTable 的表中,其中一個列標題是「有效成本」。程式碼將公式設定為引用 MainTable[Cost] 的字串,該字串應該是 MainTable[Effective Cost]。
vba 將產生執行階段錯誤,子程式將停止,且問題字串永遠不會輸出到儲存格。以下程式碼將停止子進程。 (多餘的“(”會給出彈出視窗公式錯誤)
Range("A1").Value = "=Sum((B2:B4)"
儘管下面的程式碼確實給了 #NAME?,但它可以不間斷地工作。在儲存格 A1 中出現錯誤。
Range("A1").Value = "=Sum(PotatoSalad)"
我還用一系列字串進行了快速測試。將公式儲存到數組中的字串似乎可以避免程式碼中斷的問題,因為公式在刷新之前不會計算。這個問題進一步詳細介紹了使用數組將公式轉儲到單元格中時發生的情況 - 長話短說,使用變體數組將導致公式評估並停止子項。https://stackoverflow.com/questions/19238844/strange-behavior-when-assigning-a-vba-array-to-formulas-of-an-excel-range
以下程式碼將一直有效,直到儲存格 A1 被迫重新計算。
Dim MyArray(0 to 0) as String MyArray(0) = "=Sum((B2:B4)" Range("A1").Value = MyArray()
將相同的數組作為變體傳遞將產生運行時錯誤。