如何使用VBA,Excel调试技巧

如何使用VBA,Excel调试技巧,第1张

方法/步骤

进入VBA环境,一种通过宏的方式进入vba环境,另一种就是通过工具---宏---visual basic 编辑器进入,如下图

双击我们要用vba *** 作的sheet,这里选择sheet1,如下图。

在打开的代码编辑窗口编写代码,如下图所示。

编写好代码后,我们按快捷键Ctrl+G调出立即窗口(用来显示debug.print输出值和调试输出),如下图所示。

使用F8快捷键单步执行程序,结果如下图,要求我们激活宏。

这是我们的Excel宏的安全级别太高导致,现在我们调整下宏的安全级别,如下图。点击工具--宏---安全性。在安全性对话框中,选中安全级别中或者低,点击确定按钮。

关闭文档,重新打开,打开vba编辑器,点击F8,结果如下图。程序就会单步执行,这里为了演示,故意写了句错误语句。

修改语句后,单步执行如下图所示。我们可以看到i,j的输出值。

调出监视窗口, *** 作如下图。在编辑窗口空白处右键点击,选择监视添加监视,如下图。可以将变量或者表达式添加到监视窗口里,单步调试时,可以观察变量变化。

调出本地窗口,本地窗口用来查看现有变量的值。 *** 作如下图所示。这样我们就有了自己调试vba的环境了,几个窗口和单步调试,剩下的就是我们要学习一下这门语言了。

可以使用F8一行一行的执行代码,可以查看每一行代码运行的效果,发现哪一行不符合预期,从而达到发现问题、解决问题的调试过程。

在单步执行过程中,可以把鼠标放在变量上显示变量的值,也可以把需要随时关注的变量或者表达式的添加到监视区域。

有时候部分循环很费时,可以在循环体之后设置断点,程序执行到那里就停下了等到单步等 *** 作,可以缩短时间。

我怀疑这并不是那么复杂,但我没有多少运气为Google找到合适的术语...所以我来找专家!EXCEL VBA,更改单元格组和Worksheet_Change事件

所以我试图实现一个Worksheet_Change事件。这非常简单,我基本上只想做以下事情:

如果C列中的值发生变化,并且D中的值(在该行中)具有特定的格式(NumberFormat =“$ 0.00”),则E列(在该行)是这两个值的乘积。简单。实际上,我只想要在E列中使用公式的VBA等价物。这个代码我使用:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 3 And Target.Value <>"" Then

If Target.Offset(0, 1).NumberFormat = "$ 0.00" Then

Target.Offset(0, 2).Value = Target.Value * Target.Offset(0, 1).Value

End If

End If

end sub

我的问题是雨后春笋般冒出来,当我尝试在多个值粘贴到c柱的多行。即我将一列数据(>1行)复制到C中,并且出现类型不匹配错误。我会做出巨大的飞跃,它不能很好地处理这个问题,因为“目标”意图是一个单一的单元而不是一个组。我希望有一种简单的方法来处理这个问题,每次单元格上的单元格发生变化时都不会出现一些疯狂的循环。

在此先感谢!

来源


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12017790.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存