2016-01-25 33 views
4

我已經在網絡中搜索瞭解決方案並多次重新編寫了VBA代碼。 我結束了手動填充的字符串(以比特,因爲我總是誤計數引號):在單元格中輸入公式生成應用程序定義的或對象定義的錯誤

PKHNTString = "=SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);" 
PKHNTString = PKHNTString + """ "";""" 
PKHNTString = PKHNTString + """)" 

這導致含有的字符串: = SUBSTITUTE(UPPER(AF:AF & AD:AD & AE: AE);「」;「」) ,可以在本地變量中找到:「」;「」;「」)「字符串

如果我將這個確切值粘貼到單元格中,它可以工作(刪除空格並將所有內容都轉換爲大寫),但是當我把在該式中,通過VBA這樣的細胞:

NWS.Cells(j, 48).Formula = PKHNTString 

我得到的錯誤:運行時錯誤「1004」應用程序定義或對象定義的錯誤。

任何幫助,將不勝感激!

TIA, 威廉

+0

你試圖做一個數組公式? –

回答

4

已指定分號(;)作爲在公式中的說法隔板。通過VBA,無論當前的區域設置如何,您都需要使用逗號。但.FormulaLocal不需要列表分隔符的本地化版本。

因爲區域設置可以並且會在PC之間有所不同,所以最好使用.Formula成員而不是.FormulaLocal - 否則您必須使用代碼來確定要使用的正確列表分隔符(可以使用一些API calle,但它比僅使用.Formula更有用)。

因此,要麼使用.FormulaLocal,要麼替換「;」用「,」(推薦)。

+0

感謝卡爾,FormulaLocal做到了!!我已經試圖取代;通過,但似乎沒有工作。現在我再次測試它,它也工作! 感謝您的快速回復:) –

+0

@WillemSchulte:FormulaLocal不會很便攜;當您在具有其他區域設置(特別是列表分隔符)的PC上運行相同的VBA代碼時,它將停止工作。我已經用細節更新了答案。替換「;」與「,」應該與。公式結合... –

+0

謝謝,我來到了同樣的考慮,並使用一般符號與。再次感謝:) –

0

你要逃避PKHNTString每一個內部「(引號)現在,VBA試圖插入=SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);的公式,不知道什麼是;"")將同時進入公式的單元格,你PKHNTString必須。:

"=SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);"" "";"""")" 

這並不容易通過VBA進入配方「......

+0

感謝伊根,爲您的答覆。該字符串構建正確,我首先嚐試了您的代碼。由於我通常會把報價弄亂,所以我傾向於將字符串拆分,以確保它正確地建立起來。實際的錯誤是由我不使用FormulaLocal導致的。 –

相關問題