You've got a few things to clean up here. 
- Your function is not specifying a return type. This is recommended, even if you want to return a Variant.
- Declare your parameters as either ByValorByReffor these reasons.
- Since this is a function, there are a variety of logic branches that aren't returning any value at all. You want your function to be fully "functional", so account for all possible cases.
- You're checking if your input parameters (declared as Variants) are actuallyDates. VBA does not have "short circuit evaluation" for anIfstatement. What this means is that ALL logical conditions betweenIfandThenMUST be evaluated. So in your code above, when you checkIsDate(StartDate)and then go ahead and use it in the same statement, it could fail whenStartDateis not aDatetype. While it's tedious, you need to remember this and break up the statement when this type of situation is possible.
EDIT: I realized I didn't answer your original question. Your date comparison is not working when your "dates" are expressed in String
  form. What's happening is you are comparing a string to a string, not
  a date to a date. The IsDate function returns True if a string looks
  like a date. For a proper comparison, you have to convert your
  String date to a Date type. Then your comparison will work. See
  updated code below.
Here is your example reworked to illustrate what I mean:
Option Explicit
Sub test()
    Debug.Print InPost(#3/31/2018#, #4/2/2019#, vbNullString, "Current")
    Debug.Print InPost("31/3/2018", "04/02/2019", vbNullString, "Current")
End Sub
Function InPost(ByVal ReferenceDate As Variant, _
                ByVal StartDate As Variant, _
                ByVal EndDate As Variant, _
                ByVal Status As Variant) As String
    If Left(Status, 7) = "Current" Then
        If IsDate(StartDate) Then
            '--- convert from String to Date if necessary
            StartDate = IIf(TypeName(StartDate) = "String", _
                            DateValue(StartDate), StartDate)
            If IsDate(ReferenceDate) Then
                '--- convert from String to Date if necessary
                ReferenceDate = IIf(TypeName(ReferenceDate) = "String", _
                                    DateValue(ReferenceDate), ReferenceDate)
                If StartDate <= ReferenceDate Then
                    InPost = "YES"
                Else
                    InPost = "NO"
                End If
            Else
                InPost = "ERROR Wrong Format: ReferenceDate"
            End If
        Else
            InPost = "ERROR Wrong Format: StartDate"
        End If
    Else
        InPost = "ERROR: Status is not Current"
    End If
End Function