作者paul60209 (我是保罗小小)
看板Visual_Basic
标题Re: [算表] VBA里怎麽让IFERROR秀出空白
时间Thu Sep 6 09:42:47 2018
※ 引述《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
希望有帮助到你
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.160.86.143
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1536198174.A.23C.html
1F:推 jumbotest: 神人 09/06 21:44
2F:推 Ibrahimovic: 感谢您~~ 09/06 23:14