挑战:绝对初学者的MS Excel VBA编程

时间:2011-01-03 12:05:43

标签: excel excel-vba excel-2007 vba

我正在使用VBA For Dummies和上面提到的书的组合学习VBA。后者提出了一个简单的挑战(挑战2,第2章),我想问一些有关反馈的人。

挑战如下:

  

在工作表上放置一个Command Button控件并在Click()中编写一个程序   每次单击鼠标时将变量增加5的事件过程。   在消息框中输出此变量的值。

我将以下代码片段放在一起作为回应:

Sub CommandButton1_Click()
Dim AddClick As Integer

AddClick = Range("A1").Value
AddClick = AddClick + 5
Range("A1").Value = AddClick

MsgBox AddClick

End Sub

虽然代码有效,但我很确定有一种方法可以消除使用'Range(“A1”)。值'以'AddClick'变量为基础。我该怎么做呢?

*更新:感谢Cody Gray的建议(http://articles.techrepublic.com.com/5100-10878_11-5854605.html),我已经将代码修改为以下内容 - 现在可以正常使用(已编辑)为了进一步简化):*

Sub CommandButton1_Click()
Static AddClick As Integer

AddClick = AddClick + 5

MsgBox AddClick

End Sub

Simples。再次感谢Cody。

2 个答案:

答案 0 :(得分:4)

我认为之前的两个样本都是错误的。正确的版本如下:

Sub CommandButton1_Click()
   Static AddClick As Integer
   AddClick = AddClick + 5
   MsgBox AddClick
End Sub

答案 1 :(得分:1)

在模块级别定义变量 这样做会增加变量从过程到模块的范围。

用现有代码替换现有代码。

Option Explicit
Dim AddClick As Integer

Sub CommandButton1_Click()
   AddClick = 0
   AddClick = AddClick + 5

   MsgBox (AddClick)
End Sub

注意:在程序级别定义变量将限制其寿命 即该变量在程序范围之外是不可访问的。