如您已經(jīng)知道如何創(chuàng)建UDFS(我希望您也嘗試在Excel中應(yīng)用它們),讓我們更深入地挖掘一下,如果您的用戶定義的功能無法正常工作,請查看可以做什麼。
為了在創(chuàng)建自定義功能時解決一些問題,您很可能需要運(yùn)行調(diào)試。然後,您可以確定該功能正常工作。
我們將探討以下調(diào)試技術(shù):
創(chuàng)建自定義功能時,總是有可能犯錯。自定義功能通常非常複雜。而且他們並不總是立即開始正確地工作。公式可能會返回不正確的結(jié)果或#Value!錯誤。與標(biāo)準(zhǔn)Excel功能不同,您將看不到任何其他消息。
有沒有辦法逐步瀏覽自定義函數(shù)以檢查其每個語句的工作方式?當(dāng)然!調(diào)試用於此。
我將為您提供幾種調(diào)試您的自定義功能的方法,以便您可以選擇適合您的功能。
例如,我們從以前的文章之一中使用自定義函數(shù)getmaxbet ,該文章計算指定值範(fàn)圍內(nèi)的最大數(shù)字:
函數(shù)參數(shù)是編寫數(shù)字的單元格,以及值的上限和下限。
將msgbox功能放在重要位置
為了監(jiān)視計算的執(zhí)行,您可以在正確位置的屏幕上顯示最重要的變量的值。這可以使用彈出對話框完成。
MSGBOX是一個對話框,您可以使用它向用戶顯示某種消息。
MSGBOX的語法類似於其他VBA函數(shù):
msgbox(提示[,按鈕] [,title] [,helpfile,context])提示是必需的參數(shù)。它包含您在對話框中看到的消息。它也可以用於顯示各個變量的值。
所有其他參數(shù)都是可選的。
[按鈕] - 確定在MSGBox中顯示哪些按鈕和圖標(biāo)。例如,如果我們使用選項vbokonly ,則只會顯示OK按鈕。即使您錯過了此參數(shù),默認(rèn)情況下使用此按鈕。
[標(biāo)題] - 您可以在這裡指定消息框的標(biāo)題。
讓我們從單詞切換到練習(xí)並開始調(diào)試。要顯示該消息,請在用戶定義的函數(shù)之間的代碼中添加以下行,然後再運(yùn)算符:
這是我們將得到的結(jié)果:
使用對話框中的VMAX變量,我們將看到哪些數(shù)字符合選擇標(biāo)準(zhǔn),以便我們可以選擇其中最大的標(biāo)準(zhǔn)。在標(biāo)題欄中的“ Count -&i”一詞中,我們指出我們已經(jīng)選擇了多少個數(shù)字來確定最大值。每個新值將增加計數(shù)器。
一旦擁有UDF集,我們就將以下公式應(yīng)用於日期範(fàn)圍:
= GetMaxBetween (A1:A6,10,50)
按下Enter按鈕後,您將在下面的屏幕截圖中看到一條消息:
這是符合標(biāo)準(zhǔn)的範(fàn)圍A1:A6中的第一個數(shù)字:大於10但小於50。
單擊“確定”後,將出現(xiàn)第二個消息,其中數(shù)字14。其餘數(shù)字與選擇標(biāo)準(zhǔn)不匹配。因此,該函數(shù)退出並返回兩個值中最大的17。
MSGBox函數(shù)可用於自定義功能中最重要的位置,以控制單個變量的值如何變化。當(dāng)您擁有較大功能和大量計算時,消息框可能非常有用。在這種情況下,您可以輕鬆確定錯誤發(fā)生的代碼的哪一部分。
確定停止點(diǎn)並逐步執(zhí)行
您可以在代碼執(zhí)行停止的函數(shù)代碼中添加斷點(diǎn)。因此,您可以逐步遵循計算過程。在此過程中,您可以看到變量的值如何變化。
要添加斷點(diǎn),請將光標(biāo)放在包含您選擇暫停的語句的行上。然後右鍵單擊並選擇調(diào)試 - >切換斷點(diǎn)或僅按F9 。您也可以單擊功能代碼左側(cè)的垂直灰色區(qū)域的所需位置。
正如您在下面的屏幕截圖中看到的那樣,將會出現(xiàn)一個紅色圓圈。以紅色突出顯示計算將停止的代碼線。
現(xiàn)在,當(dāng)功能運(yùn)行時,VBA編輯器窗口將打開。光標(biāo)將定位在您停止的點(diǎn)。
如果將鼠標(biāo)光標(biāo)懸停在功能代碼中的任何變量上,則可以看到其當(dāng)前值:
按F5繼續(xù)計算。
筆記。斷點(diǎn)後,您可以逐步跟蹤計算的進(jìn)度。如果按F8按鈕,將僅執(zhí)行VBA代碼的下一行。帶有箭頭的黃線也將移至最後執(zhí)行的代碼位置。
由於該函數(shù)的執(zhí)行再次暫停,因此您可以使用鼠標(biāo)光標(biāo)查看函數(shù)所有變量的當(dāng)前值。
F8的下一批出版社將使我們向前一步。因此,您可以按F8直到計算結(jié)束。或按F5繼續(xù)計算直至下一個斷點(diǎn)。
如果發(fā)生錯誤,則光標(biāo)將停止在發(fā)生錯誤發(fā)生的代碼的點(diǎn)。您還將看到一條彈出錯誤消息。這使確定問題的原因變得容易。
您指定的斷點(diǎn)將被應(yīng)用於關(guān)閉文件。重新打開它時,您需要再次設(shè)置它們。不是最方便的方法,您不覺得嗎?
但是,可以解決此問題。在必要的點(diǎn)將stoert語句插入功能代碼中,您可以以與使用斷點(diǎn)時相同的方式停止程序執(zhí)行。
當(dāng)VBA遇到停止語句時,它將停止執(zhí)行程序並等待您的操作。檢查變量的值,然後按F5繼續(xù)。
或按F8如上所述逐步完成函數(shù)。
停止語句是程序的一部分,因此沒有像斷點(diǎn)一樣刪除。完成調(diào)試後,請自己刪除?;蛲ㄟ^單個報價(')在之前將其變成評論。
使用DEBUG.PRINT運(yùn)算符進(jìn)行調(diào)試
您可以將debug.print放在功能代碼中的print。這對於檢查週期性變化的變量值很有用。
您可以在下面的屏幕截圖上看到Debug.print的性能的示例。
語句debug.print I,vmax打印值及其序數(shù)。
在接下來的窗口中,您可以從所選範(fàn)圍內(nèi)看到兩個數(shù)字(17和14),這對應(yīng)於設(shè)定限制,其中將選擇最大值。數(shù)字1和2表示該函數(shù)已完成了選擇數(shù)字的2個週期。我們看到了最重要的變量的值,就像MSGBox之前所做的那樣。但這並沒有停止該功能。
從過程中調(diào)用功能
您可以調(diào)用用戶定義的函數(shù),而不是來自工作表中的單元格,而是從一個過程中調(diào)用。在這種情況下,所有錯誤將顯示在“ Visual Basic Editor”窗口中。
這是您可以從一個過程中調(diào)用用戶定義的函數(shù)getMaxber的方式:
將光標(biāo)放置在代碼中的任何位置,然後按F5 。如果功能沒有錯誤,您將看到一個帶有計算結(jié)果的彈出窗口。
如果發(fā)生錯誤,您將在VBA編輯器中看到一條相應(yīng)的消息。計算將停止,並且發(fā)生錯誤的代碼線將以黃色突出顯示。您可以輕鬆地確定錯誤發(fā)生的位置和原因。
就這樣?,F(xiàn)在,您已經(jīng)創(chuàng)建了自己的加載項,將其添加到Excel中,並且可以在其中使用UDF。如果要使用更多UDFS,只需在VBA編輯器中的“加載項”模塊中寫入代碼,然後保存。
就是這樣。我們涵蓋了調(diào)試自定義功能的不同方法,並學(xué)會瞭如何在您的工作簿中使用它們。我們真的希望您發(fā)現(xiàn)這些準(zhǔn)則有所幫助。如果您有任何疑問,請在本文的評論中寫下。
以上是了解如何在Excel中調(diào)試自定義功能的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)