новый программист с вопросом для более опытных руководителей. Я использую Office 365 ProPlus.
У меня есть переменная, которая иногда сохраняет свое значение между вызовами макроса. Рассматриваемая переменная - это счетчик, который я создал, чтобы подтвердить, что my for l oop работал столько раз, сколько я планировал. В конце макроса значение счетчика будет выводиться в ячейку моего листа. Я начал замечать, что вместо того, чтобы давать мне один и тот же ответ каждый раз, значение ячейки увеличивалось на число итераций в l oop после каждого вызова макроса (например, для al oop с пятью итерациями, после первый вызов моего счетчика будет равен 5, после второго вызова 10, после третьего 15 и т. д.). Если я остановлю макрос в середине, скажем, чтобы внести изменения, а затем перезапущу, счетчик сбрасывается до 0.
Вот соответствующие разделы кода:
Option explicit
Public Counter As Integer
Sub MyMacro()
Call Looper
Sheets("Sheet1").Range("g2") = Counter
End Sub
Sub Looper()
Dim k as Integer
For k = 33 to 4044
Counter = Counter + 1
'Nonrelevant code
Next k
End Sub
Приведенный выше код имеет все активные использования переменной, не включая окна сообщений.
Я помещаю окна сообщений до и после вызова моего подпрограммы l oop на тот случай, если она как-то связана с тем, как счетчик печатал в ячейку, но окно сообщения перед l oop отображает результат предыдущего вызова, а окно сообщения после l oop увеличивается на число циклов. Я также добавил выражение наблюдения для Counter, и, если я не сбросил счетчик, прерывая процесс, как упомянуто выше, как только подпрограмма начинает, значение Counter переходит к тому, что было в конце предыдущего вызова.
Я могу установить начальное значение счетчика на 0, но почему счетчик вообще начинается со значения?