国产一区二区欧美精品免费-欧美国产日韩在线视频-欧美亚洲国语精品一区二区-欧美激情五月综合啪啪-国产69精品麻豆久久久久-亚洲人成精品久久久久桥网站-欧美刺激肥熟在线视频-十七岁日本免费完整版BD-黑夜在线拖拽不卡第一页

`
Excel VBA中讓你意想不到的陷阱
其他        編號(hào):182        日期:2016/10/22 21:27:54         作者:土豪
Avatar
Avatar
閱讀:0

Excel VBA中讓你意想不到的陷阱

時(shí)間:2013-09-03 00:41來(lái)源:Office教程學(xué)習(xí)網(wǎng) www.office68.com編輯:麥田守望者

VBA代碼由于簡(jiǎn)單實(shí)用,大家都很喜歡,但有些代碼怎么看都沒(méi)有問(wèn)題,調(diào)試時(shí)卻總是出錯(cuò)?
究竟是為什么呢,其實(shí)代碼本身沒(méi)有錯(cuò),在正常情況下都沒(méi)有問(wèn)題,錯(cuò)在運(yùn)行環(huán)境本身出了問(wèn)題,下面舉例予以說(shuō)明:

1、微軟在定義屬性時(shí),進(jìn)行了長(zhǎng)度限制
比如:區(qū)域的Address屬性,雖然是字符串,卻是定長(zhǎng)字符串,不能超過(guò)256個(gè)字符。
如果用它來(lái)獲取單元格地址,只能獲取前256個(gè)字符。
(一般情況下不會(huì)出問(wèn)題,但如果單元格區(qū)域是很零散的單元格區(qū)域,就可能出錯(cuò))

2、VBA中屬性解釋與實(shí)際不符
比如:Cells.SpecialCells(xlCellTypeLastCell),微軟幫助中:用于獲取“已用區(qū)域中的最后一個(gè)單元格”,但實(shí)際上是獲取“已用區(qū)域中的最后一個(gè)可見(jiàn)單元格”,
如果已用區(qū)域最后一個(gè)單元格正好被隱藏,就與該屬性的定義產(chǎn)生偏差,導(dǎo)致代碼達(dá)不到預(yù)期效果。

3、兼容32位環(huán)境的限制
在VB環(huán)境中,長(zhǎng)整型變量是long,最大支持 2,147,483,647,約21億,似乎很大了,
在excel2000/2003沒(méi)有問(wèn)題,但在excel2007及以上版本中就可能出問(wèn)題,
如果你執(zhí)行這一句:MsgBox Cells.Count,肯定會(huì)出錯(cuò),因?yàn)楝F(xiàn)在支持1048576行*16384列,已經(jīng)21億,超過(guò)了長(zhǎng)整型的限制。
而且Rows.count*Columns.count也會(huì)出錯(cuò),其原因也是一樣,雖然單個(gè)都沒(méi)有超上限,但結(jié)果超長(zhǎng)整型上限也不行。

4、VBA代碼在VSTO中,由于環(huán)境變化,也會(huì)出現(xiàn)異常
比如:ActiveSheet.HPageBreaks.add,在VBA、COM中都正常,在VSTO中會(huì)導(dǎo)致下一行內(nèi)容丟失。

因此,在編寫(xiě)代碼時(shí)預(yù)先考慮到以上等情況,可以減少你調(diào)試的難度,避免走彎路。