※ 引述《Ibrahimovic (伊布)》之銘言:
: ※ [本文轉錄自 Office 看板 #1Ra6Vo7n ]
: 作者: Ibrahimovic (伊布) 看板: Office
: 標題: [算表] VBA裡怎麼讓IFERROR秀出空白
: 時間: Thu Sep 6 07:34:07 2018
: 軟體: Office
: 版本: 2016
: 原本儲存格N2的內容 =IFERROR(VLOOKUP(M2,A:B,2,0),"")
: 想把它改成用VBA寫
: 可是後面的 ""
: 試過好次還是寫不出來
: 想請教諸位這要何解?
將Excel公式寫進VBA裡面大致有兩種寫法,
第一種為正規寫法,就是引用Application內的WorksheetFunction屬性,
底下會有多種Excel函數,供你選擇,例如本例的寫法便會是
Cells(2, "N") = Application.WorksheetFunction.IfError _
(Application.WorksheetFunction.VLookup(Cells(2, "M"), _
Range("A2:B1048576"), 2, 0), "")
第二種寫法為暴力寫法,就是直接把公式"硬塞"進去儲存格內,
例如本例的寫法就會是
Cells(2, "N") = "=iferror(vlookup(M2,A:B,2,0)," & Chr(34) & Chr(34) & ")"
稍微解釋一下,雙引號(")在VBA內被認定是字串定義符號,
所以如果要真正打出雙引號",則必須打兩次,例如:
Range("A1")="""" 此時A1儲存格會顯示"
所以如果按照你最初的公式要用這種打法就會變成...
Cells(2,"N")="=IFERROR(VLOOKUP(M2,A:B,2,0)," & """""" & ")"
但這樣太容易出錯(漏打或多打),所以可以直接用chr()的方式來打出雙引號
雙引號的chr()為34,即chr(34)= "
因此上述的法二就是用這種方式,也是我個人認為較不容易出錯的寫法~
另外還有其他相關的chr表,貼上一個部落客整理的資訊,供大家做參考
http://somebabytina.pixnet.net/blog/post/29868252-chr%E8%A1%A8
希望有幫助到你