2013-11-06 6 views
2

Я пытаюсь написать функцию в Excel, что:Excel VBA простого код ошибка

  1. Перебирает каждый лист
  2. проверяет, является ли введенная строка существует в подаваемой ячейке
  3. Добавляет заданную величину ячейки к возвращаемому значению, если шаг 2 соответствует True

Я прошел через свою функцию и получаю правильные значения, пока функция не добавит 4-я ячейка к моему возвращаемому значению.

У любого есть идеи, что происходит? Благодаря!


Function Revenue(row As Integer, col As Integer, str As String) As Integer 

    Dim i As Integer 

     For i = 2 To Worksheets.Count 

      If Worksheets(i).Cells(row, col) = str Then 

       Revenue = Revenue + Worksheets(i).Cells(21, 2) // Bug occurs on 4th iteration 
       Debug.Print Revenue 

      End If 

     Next i 


End Function 
+0

Какая ошибка вы получаете, точно? – ARich

+4

Я уверен, что это 'Overflow', поскольку' Revenue' является целым числом. Может быть, кто-то зарабатывает слишком много денег :-) – Sam

+0

Я не вижу ошибки, мой код просто перестает работать, и я получаю #VALUE в результате. Я не думаю, что это проблема переполнения b/c, которая возникает на четвертой итерации, будь то доход = 50 000 или 30 000. Есть ли инструмент отладки, который я неправильно использую? Благодаря! –

ответ

2

Вы должны установить значения для строки и седловины перед их использованием.

+0

Они объявлены в сигнатуре функции. Однако это не в блоке форматирования кода. – Sam

+1

Затем проверьте значения в ячейках (21,2) для каждого листа, чтобы они были хорошими номерами, а не текстом. –

+0

+1 - Это хорошая точка, да .. Я не ОП, хотя :) – Sam