[英]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.