Como veo que cada uno saco una version, saco yo una indicando una serie de reglas dentro del estandard Ascii
Dim vector() As Byte, ascii As Byte
Dim i As Long, longitud As Long, max As Long
Public Function Length(str As String) As Long
vector = StrConv(str, vbFromUnicode)
longitud = (UBound(vector))
max = longitud + 1
If (vector(longitud) < 48) Or (vector(longitud) > 57) And (vector(longitud) < 65) Or (vector(longitud) > 90) And (vector(longitud) < 97) Or (vector(longitud) > 122) Then
ascii = 48
ReDim vector(max) As Byte
vector(max) = ascii
Call medir
Length = i
ElseIf (vector(longitud) > 47) And (vector(longitud) < 58) Then
ascii = 78
ReDim vector(max) As Byte
vector(max) = ascii
Call medir
Length = i
Else
ascii = 94
ReDim vector(max) As Byte
vector(max) = ascii
Call medir
Length = i
End If
End Function
Private Sub medir()
i = 0
While (Chr(vector(i)) <> Chr(ascii))
i = i + 1
Wend
End Sub
Explico como va para que no se lien algunos
' si el ultimo indice del array es menor de 48 o mayor de 57 y menor de 65 o mayor de 90 y menor de 97 o mayor de 122 es simbolo
'a si que le asignamos un 0 al array despues de redimensionarlo y si es mayor de 47 y menor de 58 es numero a si que asignamos la N
'en caso contrario es una letra y le asignamos ^ para usarlos como fin del bucle y asi determinar el numero de chars que tiene la cadena,
'despues llamamos a un procedimiento que mientras cada byte codificado a char sea distinto de lo que se le asigno ejemplo ^ el iterador se incrementa
salu2
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.