簡體   English   中英

Excel宏-將包含雙引號的公式插入ActiveCell時出錯

[英]Excel Macro - Error Inserting Formula that contains double quotes into ActiveCell

我這里有個情況。 有一個excel表格,其中的單元格A1如下式所示。

=(IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(B10,-1,0,1,1),".",""))),1,IF(ISERROR(FIND("`",SUBSTITUTE(OFFSET(B10,-1,0,1,1),".","`",1))),VALUE(OFFSET(B10,-1,0,1,1))+1,VALUE(LEFT(OFFSET(B10,-1,0,1,1),FIND("`",SUBSTITUTE(OFFSET(B10,-1,0,1,1),".","`",1))-1))+1)))

我正在編寫一個子程序,以將相同的公式放入活動的/選定的單元格中,但是這樣做時,VBA由於讀取“。”而遇到錯誤。 在公式中,它期望

錯誤的屏幕截圖

該代碼復制如下。 我只是想輸入一個公式,否則該公式將直接在excel中使用,但這一次是通過一個按鈕將這個公式放在活動單元格中。 我怎樣才能做到這一點?

Sub fillmainwbs()
    ActiveCell.Formula = "=(IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(B10,-1,0,1,1),".",""))),1,IF(ISERROR(FIND("`",SUBSTITUTE(OFFSET(B10,-1,0,1,1),".","`",1))),VALUE(OFFSET(B10,-1,0,1,1))+1,VALUE(LEFT(OFFSET(B10,-1,0,1,1),FIND("`",SUBSTITUTE(OFFSET(B10,-1,0,1,1),".","`",1))-1))+1)))"
End Sub

在VBA中,公式指定為字符串。 您的公式在“”處遇到的第一個雙引號。 被認為是公式字符串的末尾,那么該行的其余部分在語法上是錯誤的。

要在VBA中的字符串中指定雙引號字符(這是您的Excel公式包含雙引號時需要執行的操作),您需要使用雙引號-“”

當VBA在字符串中看到“”時,會將其視為字符“”,而不是包含公式的字符串結尾。

對於公式中的所有雙引號,您需要將其替換為雙雙引號:

"=(IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(B10,-1,0,1,1),""."",""""))),1,IF(ISERROR(FIND(""`"",SUBSTITUTE(OFFSET(B10,-1,0,1,1),""."",""`"",1))),VALUE(OFFSET(B10,-1,0,1,1))+1,VALUE(LEFT(OFFSET(B10,-1,0,1,1),FIND(""`"",SUBSTITUTE(OFFSET(B10,-1,0,1,1),""."",""`"",1))-1))+1)))"

請注意,在Excel公式中使用的空字符串“”實際上需要在字符串中表示為:

""""

基本上,在VBA中打開字符串后,在打開的雙引號之后遇到的第一個雙引號表示字符串的結尾。 所有雙引號雙引號表示字符串中的雙引號字符。

因此,如果您需要在VBA中指定此公式,請執行以下操作:

A1 = ""

它將指定為以下字符串:

"A1 = """""

第一個雙引號將打開字符串。 第2個和第3個雙引號表示公式中的第一個雙引號字符。第4個和第5個雙引號表示公式中的第二個雙引號字符。第6個雙引號關閉了字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM