У меня есть простая функция поиска - addFormulaTestDataLoop
- которая вызывается несколько раз для возврата номера строки.
В первых двух вызовах (вызов 1 и вызов 2) он находит начало и конецстроки для первого блока.Затем я вызываю его еще два раза (звоните 3 и звоните 4), чтобы получить номера следующей и начальной строки. Но при третьем вызове (вызов 3), вместо возврата значения, оно переходит к End Function
.Однако, когда я перебираю код, подпрограмма поиска gFindInColumn
содержит правильный номер строки.
Public Function gFindInColumn(search As Variant, columnNum As Double, Optional rowNum As Double) As Double
If rowNum = 0 Then
rowNum = 2
End If
gFindInColumn = Columns(columnNum).Find(What:=search, _
After:=Cells(rowNum, columnNum), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False).row
'MsgBox "value = " & gFindInColumn, vbExclamation, "Finished"
End Function
Эта функция вызывается так:
dlgSysteEPatchTempDateTime.Show
temp = dlgSysteEPatchTempDateTime.txtBPreBaseLineEndTemp.Value
sStr = dlgSysteEPatchTempDateTime.txtBPreBaselineStartDate.Value & " " & dlgSysteEPatchTempDateTime.txtBPreBaselineStartTime.Value
eStr = dlgSysteEPatchTempDateTime.txtBPreBaselineEndDate.Value & " " & dlgSysteEPatchTempDateTime.txtBPreBaselineEndTime.Value
sRow(1, 1) = gFindInColumn(sStr, 3)
eRow(1, 1) = gFindInColumn(eStr, 3)
Call addFormulaTestDataLoop(temp, sRow(1, 1), eRow(1, 1))
'Dur
temp = dlgSysteEPatchTempDateTime.txtBDurBaseLineEndTemp.Value
sStr = dlgSysteEPatchTempDateTime.txtBDurBaselineStartDate.Value & " " & dlgSysteEPatchTempDateTime.txtBDurBaselineStartTime.Value
eStr = dlgSysteEPatchTempDateTime.txtBDurBaselineEndtDate.Value & " " & dlgSysteEPatchTempDateTime.txtBDurBaselineEndTime.Value
qtyDur = dlgSysteEPatchTempDateTime.txtDurQty.Value
sRow(2, 2) = gFindInColumn(sStr, 3)
eRow(2, 2) = gFindInColumn(eStr, 3)
Range("A" & sRow(2, 2)).Value = "DURING"
Call addFormulaTestDataLoop(temp, sRow(2, 2), eRow(2, 2))
Сбойна sRow(2, 2) = gFindInColumn(sStr, 3)
, но работает на первых двух вызовах?