了解如何在Excel中调试自定义功能
如您已经知道如何创建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中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

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

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

该教程展示了在Excel中进行拼写检查的各种方法:手动检查,VBA宏和使用专用工具。 学习检查单元格,范围,工作表和整个工作簿中的拼写。 虽然Excel不是文字处理器,但它的spel

本教程提供了共享Excel工作簿,涵盖各种方法,访问控制和冲突解决方案的综合指南。 现代Excel版本(2010年,2013年,2016年及以后)简化了协作编辑,消除了M的需求

Google主张Countif:综合指南 本指南探讨了Google表中的多功能Countif函数,展示了其超出简单单元格计数的应用程序。 我们将介绍从精确和部分比赛到Han的各种情况

本教程解释了绝对价值的概念,并演示了ABS函数的实用Excel应用,以计算数据集中的绝对值。 数字可能是正面的或负数的,但有时只有正值是需要的

本教程演示了如何通过对行进行分组来简化复杂的Excel电子表格,从而使数据易于分析。学会快速隐藏或显示行组,并将整个轮廓崩溃到特定的级别。 大型的详细电子表格可以是

本教程探讨了将.xls文件转换为.jpg映像的各种方法,包括内置的Windows工具和免费的在线转换器。 需要创建演示文稿,安全共享电子表格数据或设计文档吗?转换哟

本教程向您展示了如何在Google表中创建各种图表,并为不同的数据方案选择正确的图表类型。 您还将学习如何创建3D和gantt图表,以及如何编辑,复制和删除图表。 可视化数据是CRU
