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