如您已经知道如何创建UDFS(我希望您也尝试在Excel中应用它们),让我们更深入地挖掘一下,如果您的用户定义的功能无法正常工作,请查看可以做什么。
为了在创建自定义功能时解决一些问题,您很可能需要运行调试。然后,您可以确定该功能正常工作。
我们将探讨以下调试技术:
创建自定义功能时,总是有可能犯错。自定义功能通常非常复杂。而且他们并不总是立即开始正确地工作。公式可能会返回不正确的结果或#Value!错误。与标准Excel功能不同,您将看不到任何其他消息。
有没有办法逐步浏览自定义函数以检查其每个语句的工作方式?当然!调试用于此。
我将为您提供几种调试您的自定义功能的方法,以便您可以选择适合您的功能。
例如,我们从以前的文章之一中使用自定义函数getmaxbet ,该文章计算指定值范围内的最大数字:
函数参数是编写数字的单元格,以及值的上限和下限。
将msgbox功能放在重要位置
为了监视计算的执行,您可以在正确位置的屏幕上显示最重要的变量的值。这可以使用弹出对话框完成。
MSGBOX是一个对话框,您可以使用它向用户显示某种消息。
MSGBOX的语法类似于其他VBA函数:
msgbox(提示[,按钮] [,title] [,helpfile,context])提示是必需的参数。它包含您在对话框中看到的消息。它也可以用于显示各个变量的值。
所有其他参数都是可选的。
[按钮] - 确定在MSGBox中显示哪些按钮和图标。例如,如果我们使用选项vbokonly ,则只会显示OK按钮。即使您错过了此参数,默认情况下使用此按钮。
[标题] - 您可以在这里指定消息框的标题。
让我们从单词切换到练习并开始调试。要显示该消息,请在用户定义的函数之间的代码中添加以下行,然后再运算符:
这是我们将得到的结果:
使用对话框中的VMAX变量,我们将看到哪些数字符合选择标准,以便我们可以选择其中最大的标准。在标题栏中的“ Count -&i”一词中,我们指出我们已经选择了多少个数字来确定最大值。每个新值将增加计数器。
一旦拥有UDF集,我们就将以下公式应用于日期范围:
= GetMaxBetween (A1:A6,10,50)
按下Enter按钮后,您将在下面的屏幕截图中看到一条消息:
这是符合标准的范围A1:A6中的第一个数字:大于10但小于50。
单击“确定”后,将出现第二个消息,其中数字14。其余数字与选择标准不匹配。因此,该函数退出并返回两个值中最大的17。
MSGBox函数可用于自定义功能中最重要的位置,以控制单个变量的值如何变化。当您拥有较大功能和大量计算时,消息框可能非常有用。在这种情况下,您可以轻松确定错误发生的代码的哪一部分。
确定停止点并逐步执行
您可以在代码执行停止的函数代码中添加断点。因此,您可以逐步遵循计算过程。在此过程中,您可以看到变量的值如何变化。
要添加断点,请将光标放在包含您选择暂停的语句的行上。然后右键单击并选择调试 - >切换断点或仅按F9 。您也可以单击功能代码左侧的垂直灰色区域的所需位置。
正如您在下面的屏幕截图中看到的那样,将会出现一个红色圆圈。以红色突出显示计算将停止的代码线。
现在,当功能运行时,VBA编辑器窗口将打开。光标将定位在您停止的点。
如果将鼠标光标悬停在功能代码中的任何变量上,则可以看到其当前值:
按F5继续计算。
笔记。断点后,您可以逐步跟踪计算的进度。如果按F8按钮,将仅执行VBA代码的下一行。带有箭头的黄线也将移至最后执行的代码位置。
由于该函数的执行再次暂停,因此您可以使用鼠标光标查看函数所有变量的当前值。
F8的下一批出版社将使我们向前一步。因此,您可以按F8直到计算结束。或按F5继续计算直至下一个断点。
如果发生错误,则光标将停止在发生错误发生的代码的点。您还将看到一条弹出错误消息。这使确定问题的原因变得容易。
您指定的断点将被应用于关闭文件。重新打开它时,您需要再次设置它们。不是最方便的方法,您不觉得吗?
但是,可以解决此问题。在必要的点将stoert语句插入功能代码中,您可以以与使用断点时相同的方式停止程序执行。
当VBA遇到停止语句时,它将停止执行程序并等待您的操作。检查变量的值,然后按F5继续。
或按F8如上所述逐步完成函数。
停止语句是程序的一部分,因此没有像断点一样删除。完成调试后,请自己删除。或通过单个报价(')在之前将其变成评论。
使用DEBUG.PRINT运算符进行调试
您可以将debug.print放在功能代码中的print。这对于检查周期性变化的变量值很有用。
您可以在下面的屏幕截图上看到Debug.print的性能的示例。
语句debug.print I,vmax打印值及其序数。
在接下来的窗口中,您可以从所选范围内看到两个数字(17和14),这对应于设定限制,其中将选择最大值。数字1和2表示该函数已完成了选择数字的2个周期。我们看到了最重要的变量的值,就像MSGBox之前所做的那样。但这并没有停止该功能。
从过程中调用功能
您可以调用用户定义的函数,而不是来自工作表中的单元格,而是从一个过程中调用。在这种情况下,所有错误将显示在“ Visual Basic Editor”窗口中。
这是您可以从一个过程中调用用户定义的函数getMaxber的方式:
将光标放置在代码中的任何位置,然后按F5 。如果功能没有错误,您将看到一个带有计算结果的弹出窗口。
如果发生错误,您将在VBA编辑器中看到一条相应的消息。计算将停止,并且发生错误的代码线将以黄色突出显示。您可以轻松地确定错误发生的位置和原因。
就这样。现在,您已经创建了自己的加载项,将其添加到Excel中,并且可以在其中使用UDF。如果要使用更多UDFS,只需在VBA编辑器中的“加载项”模块中写入代码,然后保存。
就是这样。我们涵盖了调试自定义功能的不同方法,并学会了如何在您的工作簿中使用它们。我们真的希望您发现这些准则有所帮助。如果您有任何疑问,请在本文的评论中写下。
以上是了解如何在Excel中调试自定义功能的详细内容。更多信息请关注PHP中文网其他相关文章!

本文说明了如何使用数据验证(包括单个和因列表)在Excel中创建下拉列表。 它详细介绍了该过程,为常见方案提供解决方案,并讨论诸如数据输入限制和PE之类的限制

本文将指导您完成为Excel Pivot表和图表创建时间表的过程,并演示如何使用它以动态和引人入胜的方式与数据进行交互。 您的数据在Pivo中组织了

Excel可以使用其内置的“来自XML数据导入”功能导入XML数据。 进口成功在很大程度上取决于XML结构。结构良好的文件很容易导入,而复杂的文件可能需要手动映射。 最佳实践包括XML


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载
最流行的的开源编辑器