Эта функция поиска, кажется, прерывается при третьем вызове, не важно, что я делаю? - PullRequest
0 голосов
/ 04 октября 2018

В моем коде у меня есть небольшое кодирование ошибок непосредственно перед вызовом функции, в которой находится этот код. Я думал, что в разделе 'Dur было что-то, что нарушало функцию, потому что когда последний gFindInColumn(sStr, Range("C3:C" & lRow)) вызывается, я могу шагнутьчерез функцию ok, и она даже получает данные, которые я хочу, но вместо возврата и помещения данных в sRow(2,2) она возвращается в мой раздел кодирования ошибок.

Примечание: я закомментировал весь раздел Dur, так что sStr содержит те же самые точные данные, что и в 'Pre, что делает это через gFindInColumn

    'Pre
dlgSysteEPatchTempDateTime.Show
temp = dlgSysteEPatchTempDateTime.txtBPreBaseLineEndTemp.Value
sStr = dlgSysteEPatchTempDateTime.txtBPreBaselineStartDate.Value & " " & dlgSysteEPatchTempDateTime.txtBPreBaselineStartTime.Value
eStr = dlgSysteEPatchTempDateTime.txtBPreBaselineEndDate.Value & " " & dlgSysteEPatchTempDateTime.txtBPreBaselineEndTime.Value
lRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "C").End(xlUp).row
sRow(1, 1) = gFindInColumn(sStr, Range("C3:C" & lRow))
eRow(1, 1) = gFindInColumn(eStr, Range("C3:C" & lRow))
'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

'wsData.Activate
sRow(2, 2) = gFindInColumn(sStr, Range("C3:C" & lRow))

и

 Public Function gFindInColumn(search As Variant, rngCol As Range, Optional rowNum As Long = 2) As Long
    Dim f As Range
    Set f = rngCol.Find(What:=search, After:=rngCol.Cells(rowNum), _
                        LookIn:=xlValues, LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False, _
                        SearchFormat:=False)

    If Not f Is Nothing Then
        'only return non-zero if the found cell is *after* rowNum
        gFindInColumn = IIf(f.row > rowNum, f.row, 0)
    Else
        gFindInColumn = 0
    End If

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...