我用VB6運(yùn)行不報(bào)錯(cuò)
創(chuàng)新互聯(lián)為您提適合企業(yè)的網(wǎng)站設(shè)計(jì)?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強(qiáng)的網(wǎng)絡(luò)競(jìng)爭(zhēng)力!結(jié)合企業(yè)自身,進(jìn)行網(wǎng)站設(shè)計(jì)及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè), 我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。
但在Excel的VBA中運(yùn)行則報(bào)錯(cuò)
值得說(shuō)明的是,我的VB6是打了SP5補(bǔ)丁的
盡管你可能不愿意聽(tīng),但這確實(shí)是VB語(yǔ)言的一個(gè)Bug,只要字符串中含有如下日文字符(并不是全部日文字符),在進(jìn)行文本比較時(shí)就會(huì)出錯(cuò)(二進(jìn)制比較則不會(huì)出錯(cuò)):
ゴガギグゲザジズヅデドポベプビパヴボペブピバヂダゾゼ
這個(gè)Bug已經(jīng)被微軟通過(guò)補(bǔ)丁更正。
可以用變通的方法實(shí)現(xiàn)不區(qū)分大小寫(xiě)的字符串查詢(xún):
MsgBox InStr(1, LCase("12K新 ペンダント縦約"), LCase("12k"))
也就是說(shuō)把原始字符串和要查找的字符串都轉(zhuǎn)為小寫(xiě)(或者都轉(zhuǎn)為大寫(xiě))再來(lái)查找即可。
題主這個(gè)FunctionFindWindow(一堆參數(shù))AsLong,返回值是個(gè)Long,而下面wd=FindWindow(),wd卻是個(gè)Integer類(lèi)型的,當(dāng)然會(huì)溢出。樓上說(shuō)都改成Long確實(shí)可以,不過(guò)題主的API聲明是從VB里拷貝過(guò)來(lái)的吧?VB里的Long到.NET中就是Int32了,所以應(yīng)該把上面FindWindow的返回類(lèi)型由Long改為Int32(或者Integer)才是正解。
溢出就是說(shuō)你設(shè)置的變量不合適,數(shù)據(jù)大于你設(shè)置的變量范圍了.
比如你設(shè)置的是int,,,,而數(shù)據(jù)超過(guò)了256,就會(huì)
溢出