进入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中,并且出现类型不匹配错误。我会做出巨大的飞跃,它不能很好地处理这个问题,因为“目标”意图是一个单一的单元而不是一个组。我希望有一种简单的方法来处理这个问题,每次单元格上的单元格发生变化时都不会出现一些疯狂的循环。
在此先感谢!
来源
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)