2015-09-28 4 views
0

У меня есть код ниже, который вычисляет пример нижеЗапуск всего VBA

| 1 2 |

| 2 5 7 |

и так далее, вопрос, когда я бег УВЫ более раз, не закрывая доступ дает мне пример ниже

| 1 2 9 |

| 2 5 14 |

Я просто продолжаю добавлять. Как я могу исправить это, чтобы начать все заново, не закрывая доступ и не открывая его?

Код:

Global GBL_Sum As Double 



Public Function global_add(ivalue) As Double 



    GBL_Sum = GBL_Sum + ivalue 
    global_add = GBL_Sum 



End Function 
+1

Не используйте модификатор доступа «Глобальный», он устарел. Вместо этого используйте 'Public'. –

+0

Я не уверен, что я следую ... это третье значение, просто сумма первых двух? Я предполагаю, что нет, и просто надеялся, что за этим вопросом будет больше контекста. – Hambone

+0

это бегущая сумма, 9 + 5 = 14 –

ответ

0

Преамбула: Предположим, что ты дал Петру 5 яблок, один из них Питер съел сам, а другой поделился со своей сестрой Энни. Сколько яблок осталось у Питера?

Если ваш ответ 3, чем вы не правы, потому что вы понятия не имеете, сколько яблок Петр имел прежде чем вы дали ему еще 5.

И здесь иноходь приходит:

GBL_Sum = 0 

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

+0

Общественные функции Init_Globals() GBL_Sum = 0 End Function Public Function global_add (IVALUE) As Double GBL_Sum = GBL_Sum + IVALUE global_add = GBL_Sum End Function –

+0

я использовал выше для GBL_Sum и он все еще продолжает добавлять. –

+0

Вы добавили его в отдельную функцию, но вы должны называть его с очень начальной точки. Если вычисления начинаются с нажатия одной кнопки, вы должны аннулировать эту переменную в соответствующем событии OnClick (или Clicked). – GSazheniuk

Смежные вопросы