Mi sono "inventato" la seguente "rustica" funzione:
Public Function prova(z As String)
y = Len(Trim(z))
If y = 8 Then GoTo a
If y = 6 Then GoTo b
If y = 4 Then GoTo c
If InStr(1, z, "0") Then GoTo d
a:
giorno = Mid(z, 1, 2)
mese = Mid(z, 3, 2)
anno = Mid(z, 5, 4)
prova = giorno & "/" & mese & "/" & anno
Exit Function
b:
giorno = Mid(z, 1, 2)
mese = Mid(z, 3, 2)
anno = Mid(z, 5, 2)
prova = giorno & "/" & mese & "/" & anno
Exit Function
c:
giorno = "0" & Mid(z, 1, 1)
mese = "0" & Mid(z, 2, 1)
anno = Mid(z, 3, 2)
prova = giorno & "/" & mese & "/" & anno
Exit Function
d:
giorno = "0" & Mid(z, 1, 1)
mese = Mid(z, 2, 2)
anno = Mid(z, 4, 2)
prova = giorno & "/" & mese & "/" & anno
End Function
Praticamente cambia una stringa numerica in data mettendo automaticamente gli slash, vorrei farla diventare un evento Worksheet_Change con Set Rng = Range("A25:A500,e25:e500,g25:g500") ci sto provando da molto tempo ma non ci riesco.
Sono solo riuscito ad elaborare la seguente funzione che ovviamente non funziona.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
y = Len(Trim(z))
If y = 8 Then GoTo a
If y = 6 Then GoTo b
If y = 4 Then GoTo c
If InStr(1, z, "0") Then GoTo d
a:
Set Rng = Range("A25:A500,e25:e500,g25:g500")
Application.EnableEvents = False
If Not Intersect(Target, Rng) Is Nothing And Target.Count = 1 Then
giorno = Mid(z, 1, 2)
mese = Mid(z, 3, 2)
anno = Mid(z, 5, 4)
Target = giorno & "/" & mese & "/" & anno
Exit Sub
b:
Set Rng = Range("A25:A500,e25:e500,g25:g500")
Application.EnableEvents = False
If Not Intersect(Target, Rng) Is Nothing And Target.Count = 1 Then
giorno = Mid(z, 1, 2)
mese = Mid(z, 3, 2)
anno = Mid(z, 5, 2)
Target = giorno & "/" & mese & "/" & anno
Exit Sub
c:
Set Rng = Range("A25:A500,e25:e500,g25:g500")
Application.EnableEvents = False
If Not Intersect(Target, Rng) Is Nothing And Target.Count = 1 Then
giorno = "0" & Mid(z, 1, 1)
mese = "0" & Mid(z, 2, 1)
anno = Mid(z, 3, 2)
Target = giorno & "/" & mese & "/" & anno
Exit Sub
d:
Set Rng = Range("A25:A500,e25:e500,g25:g500")
Application.EnableEvents = False
If Not Intersect(Target, Rng) Is Nothing And Target.Count = 1 Then
giorno = "0" & Mid(z, 1, 1)
mese = Mid(z, 2, 2)
anno = Mid(z, 4, 2)
Target = giorno & "/" & mese & "/" & anno
Exit Sub
End Sub
grato anticipatamente dell'aiuto.