Find first cell with a value in row or column


 Function FindRangeWithString(rngStart As Range, _
    varSearch As Variant, _
    bHorizontal As Boolean, _
    Optional bxlPart As Boolean = True) As Range
'Tested on:
'- date, integer, string
'- horizontal, vertical search
'ToDo: forward, backward, both
'?FindRangeWithString(Worksheets("PriceFreeFC").Range("b2"), #1/31/2004#, bHorizontal:=False, bxlPart:=False).Address
'?FindRangeWithString(worksheets("PriceFreeFC").Range("b2"), 18.86 , bHorizontal:=False, bxlPart:=False).Address
'?FindRangeWithString(worksheets("Forecast").Range("b1"), "B2B Utrecht forecast [MW]" , bHorizontal:=True, bxlPart:=False).Address
'?FindRangeWithString(worksheets("Forecast").Range("b1"), "B2B Utrecht forecast [MW]" , bHorizontal:=True, bxlPart:=False).Address

Dim ixlPart As Byte
Dim FindRange As Range
Dim cel As Range

If rngStart.Value = varSearch Then Set FindRangeWithString = rngStart: Exit Function

With rngStart
If bHorizontal = True Then
Set FindRange = .Worksheet.Rows(.Row)
Else
Set FindRange = .Worksheet.Columns(.Column)
End If
End With

If IsDate(varSearch) = False Then
If bxlPart = True Then
ixlPart = xlPart
Else
ixlPart = xlWhole
End If
Set FindRangeWithString = FindRange.Find(varSearch, After:=rngStart, LookIn:=xlValues, lookat:=ixlPart)
Else 'date
For Each cel In FindRange.Cells
If cel.Value = varSearch Then
    Set FindRangeWithString = cel
    Exit For
End If
Next
End If
End Function