3 回答

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
您需要Option Explicit
在每個(gè)VBA代碼模塊(包括表單和報(bào)告)的頂部使用。
您可以進(jìn)入VBA編輯器>>工具>>選項(xiàng)>>編輯器選項(xiàng)卡,并確保選中了“需要變量聲明”,以為表單和報(bào)表后面的所有將來(lái)創(chuàng)建的模塊和VBA代碼設(shè)置此設(shè)置。
從Access 2003幫助:
要求變量聲明-確定模塊中是否需要顯式變量聲明。選擇此選項(xiàng)會(huì)將
Option Explicit
語(yǔ)句添加到任何新模塊的常規(guī)聲明中。
變量變暗時(shí),我也會(huì)使用駝峰式大小寫(xiě)。 ThisIsAnExampleOfCamelCase
。如果Access不會(huì)將小寫(xiě)變量更改為駝峰大小寫(xiě),一旦退出VBA代碼行,我就會(huì)知道輸入錯(cuò)誤。

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
有關(guān)OPTION EXPLICIT和Access VBA的一些歷史記錄
根據(jù)Tony的回答,這里有一些解釋,說(shuō)明為什么在某些Access代碼模塊中未存在OPTION EXPLICIT的問(wèn)題。
在Access 95和Access 97(帶有VBA的前兩個(gè)Office版本)中,Access的代碼編輯器與其他Office程序不同。在Access 2000中,Microsoft通過(guò)Access中的其他Office應(yīng)用程序?qū)崿F(xiàn)了VBE。同時(shí),MS選擇使Access VBA模塊的行為像其他應(yīng)用程序中的模塊一樣,默認(rèn)情況下不具有OPTION EXPLICIT。
因此,在Access 2000中,默認(rèn)情況下,模塊創(chuàng)建時(shí)沒(méi)有OPTION EXPLICIT。
當(dāng)然,這對(duì)MS而言確實(shí)是一個(gè)愚蠢的設(shè)計(jì)決定,后來(lái)他們撤消了這一決定(我不記得是Access 2002或2003糾正了問(wèn)題,并在所有新模塊中再次默認(rèn)為OPTION EXPLICIT)。它之所以愚蠢(因?yàn)镸S應(yīng)該知道這一點(diǎn))是因?yàn)锳ccess是一種數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)工具,因此可以對(duì)強(qiáng)類型的數(shù)據(jù)進(jìn)行操作。因此,默認(rèn)情況下應(yīng)嚴(yán)格鍵入代碼環(huán)境,以使其與正在使用的數(shù)據(jù)保持一致。
在Excel或Word中,數(shù)據(jù)不是強(qiáng)類型,因此對(duì)幾乎所有內(nèi)容使用變體數(shù)據(jù)類型更有意義,只是使每個(gè)人都更容易使用。通過(guò)不使用OPTION EXPLICIT來(lái)實(shí)現(xiàn)這一點(diǎn)的缺點(diǎn)是,您可能會(huì)得到拼寫(xiě)錯(cuò)誤,這些錯(cuò)別字會(huì)自動(dòng)引入新變量(例如變量“ intrdoduce”),如果我使用OPTION EXPLICIT撰寫(xiě)本文,那么如果沒(méi)有OPTION EXPLICIT,就不會(huì)發(fā)生產(chǎn)生運(yùn)行時(shí)錯(cuò)誤!:)]。這是所有以這種方式工作的語(yǔ)言的問(wèn)題(我努力工作于PHP,其中變量名可以按大小寫(xiě)區(qū)分,即$ Var與$ var是不同的變量;但是我離題了),但是MS決定在Word和Excel中以這種方式實(shí)現(xiàn)它,因?yàn)檫@樣的理論是,編寫(xiě)代碼的人如果不這樣做的話,將會(huì)更輕松。
因此,MS犯了一個(gè)錯(cuò)誤,即使Access的VBE版本像其他應(yīng)用程序一樣,即使Access自己的目的內(nèi)部沒(méi)有邏輯支持這一舉動(dòng)。然后,MS撤消該更改并返回到以前的狀態(tài)(即,默認(rèn)情況下,所有模塊中的OPTION EXPLICIT)。
因此,您經(jīng)常會(huì)看到在Access 2000中開(kāi)始使用的應(yīng)用程序,這些應(yīng)用程序到處都是模塊,而沒(méi)有OPTION EXPLICIT。當(dāng)我必須使用這樣的應(yīng)用程序時(shí),我的首要任務(wù)是在所有模塊中實(shí)現(xiàn)OPTION EXPLICIT,然后修復(fù)該死的東西,使其能夠編譯(鑒于該東西是在沒(méi)有它的情況下進(jìn)行編程的,因此通常很難)。

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
這個(gè)問(wèn)題對(duì)于Excel很有幫助,您可能會(huì)看到它是否適用于Access:
丟失的變量
本質(zhì)上,MZ-Tools將搜索您的代碼并告訴您未使用的內(nèi)容。VBA的版本可以在這里找到。使用查看源代碼功能。
- 3 回答
- 0 關(guān)注
- 702 瀏覽
添加回答
舉報(bào)