出錯:“表達式中 'NZ' 函數未定義”的解決辦法 (很多Excel VBA出現 Left Right Mid Len等VBA函數未定義,或函數找不到也是類似的解決辦法)
微軟數據庫也可以使用VBA編程及窗體 報表 等搭建一個中小型的管理系統,但有時程序部署到其它電腦會出現 表達式中 'NZ' 函數未定義 或 函數 Left Right Mid Len 等函數未定義的錯誤
這種問題一般可能是數據庫mdb或accdb中引用的第三方庫 系統Dll 或第三方 Ocx控件引用丟失引起的。也有可能是的環境出現了損壞或系統文件丟失引起的。
解決辦法如下:
一、先檢查數據庫的引用有否丟失。
打開數據庫文件,按Alt+F11打開VBE編輯窗口,單擊工具 -引用,彈出引用窗口
檢查有否丟失的引用,解決引用丟失的問題后,一般函數未定的的問題就能得到解決
二、引用的Dll或OCX是否未正常注冊
如果引用的文件是存在的,但可能未正確注冊,可以使用手工的方式進行注冊
32位系統一般是在目錄下 Dll或ocx文件
64位系統一般是在目錄下 Dll或ocx文件
三、可能是安裝了其它程序導致VBA或相關系統文件被破壞或注冊表錯亂
這種情況 可以重裝一次 或整個
如重裝一下,先卸載后,然后在自定義安裝中,選擇自定義安裝(選擇所需的程序)
將中所有選項全選上,的安裝方式也選擇本地運行全部程序
重裝之后,一般上述問題均可得到解決。
四、ADO或DAO丟失或正常注冊導致上述錯誤
一般早期數據庫默認的是Ado 2.1 ,但新的自帶的Ado 可能是更新的2.6 2.8 等,可以在引用中嘗試選擇最新的版本。
另早期的數據庫使用的是dao3.6 , 可以手工找到.dll 并注冊之
五、另內置函數 VBA內置函數 不能在ADO ODBC中使用
查詢中 jet sql 語句時使用的很多函數是自帶的函數,只允許使用在環境下,如Nz函數就是內置的函數,這些函數是不能使用在Ado 或 ODBC 或 Sql 的sql語句中的。只能在的查詢分析器內部使用(Jet Sql) 或 DAO 中使用。
六、 VBA代碼中編寫的自定義函數必須由環境支持,在其他環境中根本不能使用。
VBA代碼中編寫的自定義函數必須由環境,如查詢設計器,或DAO中使用,而在鏈接Sql 的鏈接表 或存儲過程 中卻不能使用這些中的自定義函數的,另許多在VB代碼中可以運行的函數并不一定都能嵌入到jet sql語句中。
如Sql 中 或 Excel VBA中就沒有 Nz 此函數,在VBA中就要使用 IIF(A is null ,0, A) 來替代 ,在Sql 中就要使用 或別的函數來替代。
七、使用 在表達式中訪問 2007 未定義函數“nz”
我有一個使用多年的 2007 應用程序。2007 mde 前端和 mdb 后端,都在同一臺 PC 上。我使用 安裝程序。在過去的一年中,用戶開始收到錯誤“表達式中的未定義函數'nz'”。當您啟動我的應用程序并單擊幾個按鈕時在vb中如何編程使mdb數據庫集成到程序里,一切都很好。然后單擊一個按鈕和“表達式中的未定義函數'nz'”消息,而不是打開它應該打開的屏幕。您必須退出該應用程序并重新啟動它。通常第二次啟動時一切正常。退出并重新啟動,您會再次收到錯誤消息。所以是隨機的。它發生在 7 和 10 以及許多 PC 上。我的應用程序是用帶有 dao 記錄集的 VBA 編寫的。我到處都使用了 Nz 功能。從來沒有遇到過問題。當然,代碼是合理的在vb中如何編程使mdb數據庫集成到程序里,因為它已經完美地工作了很多年。任何想法是什么原因造成的?或者我該如何解決?
已解決:當您從控制面板卸載我的應用程序時(再次使用 精彩技術),它不會卸載 2007 運行時。出現問題的是運行時。修復只是使用控制面板卸載運行時。然后重新安裝我的應用程序(它安裝了新的 2007 運行時。) 這樣就可解決nz未定義函數的問題
我也遇到同樣的問題,我使用的也是公司的技術 (只是這家公司已不在了),后來也是在控制面板中卸掉掉 , 再重新安裝(使用我的安裝程序 會自動再重新安裝 ) , 就完美解決了。
通過以上7種方法一般均能解決錯誤。
如果覺得不錯,請幫忙點贊 收藏 及關注 我 @小辣椒高效