Originariamente inviato da kalosjo
semplicemente "01012001" non è una data quindi il format sbaglia
Cioè, non è un formato supportato?
01012001 per diventare 05/10/4670 come viene interpretato?
...non fraintendetemi...voglio solo capire!

Originariamente inviato gibra
Si diventa pazzi quando ci si inventa codice astruso, e non si conoscono le 'regole della programmazione'.
Non serve alcuna nuova funzione, ci mancherebbe, con tutte quelle che esistono già.
Basta studiarne l'uso, invece di arrampicarsi sugli specchi.
Ho cercato cosa studiare...ma forse ho cercato male...help me!!!

Per escocat, copio/incollo il codice in vb.net che ho scritto:
codice:
   Dim dataconv As String = TextBox_data.Text
   Try
       Dim formats As String() = New String() {"ddMMyy", "ddMMyyyy", "dd/MM/yy"}
       Dim result = DateTime.ParseExact(dataconv, formats, _
                        System.Globalization.CultureInfo.CurrentCulture, _
                        System.Globalization.DateTimeStyles.None)
       TextBox_data.Text = CStr(result)
    Catch ex As System.Exception
        'messaggio di avviso
    End Try
Dove 'formats' è la "maschera" che contiene i formati in input, qui ti puoi sbizarrire...

Comunque, partendo dal presupposto di kalosjo, in VBA per ora ho scritto questo:
codice:
Private Sub test_data()
    Dim a(2) As String
    Dim a_out As String
    a(0) = "010101"
    a(1) = "01/01/01"
    a(2) = "01012001"
    For i = 0 To UBound(a)
        a_out = ""
        Select Case Len(a(i))
            Case 6
                a_out = Format(a(i), "00/00/00")
                a_out = Format(a_out, "dd/mm/yyyy")
                Debug.Print "caso 010101  : " & a(i) & " = " & a_out
            Case 8
                If Mid(a(i), 3, 1) = "/" Then
                    a_out = Format(a(i), "dd/mm/yyyy")
                    Debug.Print "caso 01/01/01: " & a(i) & " = " & a_out
                Else
                    a_out = Format(a(i), "00/00/0000")
                    Debug.Print "caso 01012001: " & a(i) & " = " & a_out
                End If
        End Select
    Next i
End Sub
Il risultato è:

caso 010101 : 010101 = 01/01/2001
caso 01/01/01: 01/01/01 = 01/01/2001
caso 01012001: 01012001 = 01/01/2001

Al codice manca la verifica se la stringa è una data valida, che ho omesso per non allungare ancora il post...

Scusate la lunghezza, l' OT in vb.net...e l' ignoranza...ringrazio per ogni parere/consiglio/spunto che mi vorrete dare.

Vincenzo