Я создал функцию в Excel, которая в основном ищет динамический диапазон в инструкции For для строки и возвращает значение ячейки, превышающей один столбец. Это в основном функция бюджетирования, но это не относится к делу.
Вот проблема, все работает с небольшими результатами, но когда результаты становятся слишком большими (скажем, около 32000 ... по какой-то причине, которая кажется числом), функция начинает возвращать 0 .
У кого-нибудь были такие проблемы?
Вот код вопроса:
Function Material(item As String, Optional sheetType As String) As Integer
Dim wSheet As Worksheetr
Dim count As Integer
Dim offSet As Integer
Dim ref As Integer
Dim bottomRight As Integer
Dim upperLeft As Integer
Dim rng As Range
Dim cVal As Integer
For Each wSheet In Worksheets
If wSheet.Name = "Drywall Pricing" Then
dwIndex = wSheet.Index - 1
End If
Next wSheet
If IsMissing(sheetType) Then
sheetType = " "
Else
sheetType = UCase(sheetType)
End If
For i = 1 To dwIndex
wSheetName = Sheets(i).Name
If InStr(UCase(wSheetName), sheetType) > 0 Then
count = 9
offSet = 44
ref = 27
For wall = 0 To count - 1
On Error Resume Next
Err.Clear
upperLeft = (ref + 12) + (offSet * wall)
bottomRight = (ref + 30) + (offSet * wall)
Set rng = Sheets(i).Range("A" & upperLeft & ":B" & bottomRight)
cVal = Application.WorksheetFunction.VLookup(item, rng, 2, False)
If Err.Number > 0 Then
cVal = 0
End If
units = units + cVal
Next wall
Else
units = units + 0
End If
Next i
If units > 0 Then
Material = units
Else
Material = 0
End If
End Function
Я настроил электронную таблицу для ручного подсчета определенного количества элементов (т. Е. «= A13 + B5 + B26» и т. Д.) И сравнил ее с результатом запуска рассматриваемой функции и с низким уровнем результатов , они равны друг другу, поэтому я знаю, что сама функция работает правильно. Это проблема с памятью, тогда?
Любая помощь будет принята с благодарностью.
Заранее спасибо!