寵物集市-寵物集市華東、華南、華北排行榜一覽表
522
2025-04-02
excel VBA中讓你意想不到的陷阱
VBA代碼由于簡單實(shí)用,大家都很喜歡,但有些代碼怎么看都沒有問題,調(diào)試時(shí)卻總是出錯(cuò)?究竟是為什么呢,其實(shí)代碼本身沒有錯(cuò),在正常情況下都沒有問題,錯(cuò)在運(yùn)行環(huán)境本身出了問題,下面舉例予以說明:
1、微軟在定義屬性時(shí),進(jìn)行了長度限制比如:區(qū)域的Address屬性,雖然是字符串,卻是定長字符串,不能超過256個(gè)字符。如果用它來獲取單元格地址,只能獲取前256個(gè)字符。(一般情況下不會(huì)出問題,但如果單元格區(qū)域是很零散的單元格區(qū)域,就可能出錯(cuò))
2、VBA中屬性解釋與實(shí)際不符比如:Cells.SpecialCells(xlCellTypeLastCell),微軟幫助中:用于獲取“已用區(qū)域中的最后一個(gè)單元格”,但實(shí)際上是獲取“已用區(qū)域中的最后一個(gè)可見單元格”,如果已用區(qū)域最后一個(gè)單元格正好被隱藏,就與該屬性的定義產(chǎn)生偏差,導(dǎo)致代碼達(dá)不到預(yù)期效果。
3、兼容32位環(huán)境的限制在VB環(huán)境中,長整型變量是long,最大支持 2,147,483,647,約21億,似乎很大了,在excel2000/2003沒有問題,但在excel2007及以上版本中就可能出問題,如果你執(zhí)行這一句:MsgBox Cells.Count,肯定會(huì)出錯(cuò),因?yàn)楝F(xiàn)在支持1048576行*16384列,已經(jīng)21億,超過了長整型的限制。而且Rows.count*Columns.count也會(huì)出錯(cuò),其原因也是一樣,雖然單個(gè)都沒有超上限,但結(jié)果超長整型上限也不行。
4、VBA代碼在VSTO中,由于環(huán)境變化,也會(huì)出現(xiàn)異常比如:ActiveSheet.HPageBreaks.add,在VBA、COM中都正常,在VSTO中會(huì)導(dǎo)致下一行內(nèi)容丟失。
因此,在編寫代碼時(shí)預(yù)先考慮到以上等情況,可以減少你調(diào)試的難度,避免走彎路。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。