Задача: MS Excel VBA Программирование для абсолютного новичка - PullRequest
1 голос
/ 03 января 2011

Я изучаю VBA, используя комбинацию VBA For Dummies и вышеупомянутой книги.Последний представляет собой простую задачу (Задача 2, Глава 2), о которой я хотел бы попросить некоторых дать отзыв.

Задача следующая:

ПоместитеКомандная кнопка управляет рабочим листом и пишет программу в процедуре события 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»). Value », на котором будет основана переменная AddClick.Как мне поступить так?

* Обновление: благодаря предложению Коди Грея (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. Еще раз спасибо, Коди.

Ответы [ 2 ]

4 голосов
/ 03 января 2011

Я думаю, что оба предыдущих образца неверны. Правильная версия ниже:

Sub CommandButton1_Click()
   Static AddClick As Integer
   AddClick = AddClick + 5
   MsgBox AddClick
End Sub
1 голос
/ 03 января 2011

Определите переменную на уровне модуля.
Это увеличит область действия переменной от процедуры к модулю.

Замените существующий код этим.

Option Explicit
Dim AddClick As Integer

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

   MsgBox (AddClick)
End Sub

Примечание: определение переменной на уровне процедуры ограничит ее срок службы.
т.е. переменная не будет доступна вне области действия процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...