В моем коде у меня есть небольшое кодирование ошибок непосредственно перед вызовом функции, в которой находится этот код. Я думал, что в разделе '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