Hiya, I think something like this should work for you.

Sub MATCH_CATCH()

    Dim ws As Worksheet
    Dim sDateStart As String
    Dim sDateEnd As String
    Dim nDistance As Double
    Dim nLR As Double
    Dim nRow As Double
    Dim bFound As Boolean
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    sDateStart = ws.Range("C3")
    sDateEnd = ws.Range("C4")

    nLR = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    bFound = False
    
    For X = 2 To nLR
    
        If ws.Cells(X, 1) = sDateStart Then
        
            bFound = True
        
        End If
        
    Next X
    
    nDistance = DateDiff("d", sDateStart, ws.Cells(2, 1))
    nRow = 2
    
    If bFound = False Then
    
        For X = 3 To nLR
        
            If DateDiff("d", sDateStart, ws.Cells(X, 1)) < nDistance And DateDiff("d", sDateStart, ws.Cells(X, 1)) >= 0 Then
            
                nDistance = DateDiff("d", sDateStart, ws.Cells(X, 1))
                
                nRow = X
            
            End If
        
        Next X
    
        ws.Range("C3") = ws.Cells(nRow, 1)
    
    End If
    
    bFound = False
    
    For X = 2 To nLR
    
        If ws.Cells(X, 1) = sDateEnd Then
        
            bFound = True
        
        End If
        
    Next X
    
    nDistance = DateDiff("d", ws.Cells(X, 1), sDateEnd)
    nRow = 2
    
    If bFound = False Then
    
        For X = 3 To nLR
        
            If DateDiff("d", ws.Cells(X, 1), sDateEnd) < nDistance And DateDiff("d", ws.Cells(X, 1), sDateEnd) >= 0 Then
            
                nDistance = DateDiff("d", ws.Cells(X, 1), sDateEnd)
                
                nRow = X
            
            End If
        
        Next X
    
        ws.Range("C4") = ws.Cells(nRow, 1)
    
    End If
    
End Sub