era tutto nell'object al posto della string il problema.
ho risolto così, magari a qualcuno potrà servire in futuro
codice:
Function Data(ByVal valore As Object)
If Not valore Is System.DBNull.Value Then
If valore <> "0" Then
Dim DataCorta As String
Dim giorno, mese, anno As String
Dim DataLunga As String
DataCorta = Left(valore, 10)
anno = Left(DataCorta, 4)
mese = Mid(DataCorta, 5, 2)
giorno = Mid(DataCorta, 7, 2)
DataLunga = giorno & "/" & mese & "/" & anno
Return DataLunga
Else
Return ""
End If
End If
End Function
Grazie mille a tutti