it seems that most of the cells are "not valid" date (examle using =Month("D4") will result in #VALUE! result.
i change the sub to handle invalidate dates.
Public Sub subFmtDDMMYYYY()
    Dim rw As Long, last_rw As Long
    Dim vlue As Variant
    Dim txt As String
    Dim dte As Variant, tim As String
    last_rw = Cells(Cells.Rows.Count, 4).End(xlUp).Row
    For rw = 2 To last_rw
        vlue = Cells(rw, 4)
        txt = WorksheetFunction.Text(Cells(2, 4), "m")
        If IsNumeric(txt) Then
            'if numeric, it is a valid date
            Cells(rw, 4) = CDate(Month(vlue) & "/" & Day(vlue) & "/" & Year(vlue)) + TimeValue(vlue)
        Else
            'not valid date
            dte = Split(vlue, "/")
            tim = Split(dte(2))(1)
            dte(2) = Replace$(dte(2), tim, "")
            Cells(rw, 4) = CDate(dte(1) & "/" & dte(0) & "/" & dte(2)) + TimeValue(tim)
        End If
        Cells(rw, 4).NumberFormat = "dd/mm/yyyy"
    Next
End Sub