E volendo si potrebbe inserire Exit Function prima di "Esci:" ed eliminare la condizione If Err.Number <> 0 Then ... :-)
La riporto come l'ho corretta (ho anche modificato Esci in DataNonValida per mia maggiore comprensione e sostituito Empty con VbNullString per uniformità):
'Modulo1
Option Explicit
'<--- Funzione che converte una stringa di testo ddmmaa o ddmmaaa in una data --->
'<--- Una prima condizione è che le celle dove vengono inserite le date siano in formato testo --->
'<--- Una seconda condizione è che le date in "formato breve" siano sempre inserite digitando: _
- ggmmaa (es. 010116 per la data 01/01/2016) _
- ggmmaaaa (es. 01012016 per la data 01/01/2016) _
Un inserimento differente dalle due suddette modalità dà luogo ad un errore di data non valida _
E ' sempre possibile inserire le date in modalità classica (gg/mm/aa, gg/mm/aaaa)
'<--- la funzione potrebbe essere utilizzata per textbox presenti nel foglio o in una userform --->
'<--- in tal caso già la text box restituisce una stringa di testo --->
Public Function FunctionDataBreve(StringaData As String) As String
Dim GG As String, MM As String, AA As String
Dim PrefissoAnnoBreve As String
Dim Data As Date
Dim NunChrAnno As Integer
If StringaData = "" Then FunctionDataBreve = vbNullString: Exit Function
On Error GoTo DataNonValida
If Not IsDate(StringaData) Then
If Len(StringaData) <> 6 And Len(StringaData) <> 8 Then
MsgBox "Data non valida", vbExclamation, "Data"
FunctionDataBreve = vbNullString
GoTo DataNonValida
End If
If Len(StringaData) = 6 Then
NunChrAnno = 2
ElseIf Len(StringaData) = 8 Then
NunChrAnno = 4
End If
GG = Mid(StringaData, 1, 2)
MM = Mid(StringaData, 3, 2)
If MM < 1 Or MM > 12 Then GoTo DataNonValida
AA = Mid(StringaData, 5, NunChrAnno)
If Len(AA) = 2 Then
If AA >= "00" And AA <= 29 Then
PrefissoAnnoBreve = "20"
Else
PrefissoAnnoBreve = "19"
End If
End If
AA = PrefissoAnnoBreve & AA
Data = CDate(GG & "/" & MM & "/" & AA)
Else
Data = CDate(StringaData)
End If
FunctionDataBreve = Format(CDate(Data), "dd/mm/yyyy")
Exit Function
DataNonValida:
MsgBox "Data non valida", vbExclamation, "Data"
FunctionDataBreve = vbNullString
End Function