Нов съм в VBA и се занимавам със сума, която включва три if цикъла. Кодът изглежда така
Dim strKonto As String
Dim str?r As String
Dim strUdbetaling As String
Dim counter As Integer
Dim yearkbottom As Integer
Dim yearktop As Integer
For i = 1 To 50 'wsRefor.Cells(Rows.Count, 2).End(xlUp).Row
For k = 1 To 20 '200
yearkbottom = (wsRefor.Cells(k + 3, 1) - 2007) + 1
yearktop = (yearkbottom - 2007) + 4000
For j = yearkbottom To yearktop
strKonto = Right(wsArk7.Cells(j + 4, 2), 4)
str?r = wsArk7.Cells(j + 4, 1)
strUdbetaling = Left(wsArk7.Cells(j + 4, 2), 1)
counter = Val(str?r) - 2007
If wsRefor.Cells(i + 1, 2) = strKonto Then
If wsRefor.Cells(1, k + 3) = str?r Then
If strUdbetaling = 2 Then
wsRefor.Cells(i + 1, k + 3) = wsRefor.Cells(i + 1, k + 3) + wsArk7.Cells(j + 4, k + 2 - counter * 12)
End If
End If
End If
Next j
Next k
Next i
За j-цикъла се опитах да направя границите динамични, за да направя изчисленията малко по-бавни. Тоест, сигурен съм, че всички стойности, които j цикълът намира, не са разпространени в целия диапазон от j, а по-скоро в диапазона, дефиниран по-горе с помощта на k.
Въпреки това, когато правя тази промяна, получавам 1004 „Грешка, дефинирана от приложение или дефинирана от обект“.
Някой може ли да забележи грешката или алтернативно да предложи някакви методи за ускоряване на сумата?
Най-добри,
ID
EDIT: Разбрах какъв е проблема. Броячът j стана нула в някакъв момент от новите граници и когато това се случи (или когато е отрицателен), грешката, която получих, се появява.
Благодаря за помощта!
Dim str?r As String
, моят VB редактор крещи, когато видя str?r, това типична грешка ли е? - person Shai Rado   schedule 09.08.2016(Range((yearkbottom, k + 2 - counter * 12),(yearktop, k + 2 - counter * 12))
, но получавам съобщение за грешка - person pkpkPPkafa   schedule 09.08.2016