Hola, Jorge, bienvenido...
El error puede deberse a que estás utilizando Dim(), por lo que no podés asignarle valor a esa variable en ese momento. Tendrías que asignarle el valor más adelante. Por ejemplo:
Código:
Dim texto() As String
texto() = Split(Text1.Text, vbCrLf)
Y, más abajo también tendrías un error parecido cuando le agregas el "As String" luego de "For Each S". Deberías quitarlo.
Además, el Mid() no puede comenzar en el caracter cero de una cadena, pues éste no existe. Justamente por esto, también deberás cambiar el "5" del comienzo de extracción de cadena, por un "6", de lo contrario, te quedará la "N" en la cadena final. Debes cambiar "Mid(s, 0, 5)" por "Mid(s, 1, 6)"
Código:
For Each s In texto
If Mid(s, 1, 5) = "SE14N" Then
Text2.Text = Text2.Text + vbCrLf + Mid(s, 6, Len(s) - 5)
Else
Text3.Text = Text3.Text + vbCrLf + Mid(s, 6, Len(s) - 5)
End If
Next
Si querés ser más prolijo, deberías declarar la variable "S" al principio, junto con "Texto". Esta variable debe ser de tipo Variant:
Código:
Dim S as Variant
Dim texto() As String
texto() = Split(Text1.Text, vbCrLf)
Para convertir de hexa a decimal, lo que hay que hacer es recorrer el número hexadecimal empezando desde la derecha, dígito a dígito, y multiplicarlo por 16 elevado a un índice, igual a la posición de ese dígito, empezando desde cero. O sea, el dígito de la derecha, habrá que multiplicarlo por 16 elevado a la 0 potencia. El segundo, por 16 elevado a la 1 potencia. El tercero, por 16 elevado a la 2 potencia. Y así sucesivamente...
Por ejemplo, para convertir 8A7 a decimal:
7 x (16 ^ 0) = 7
10 x (16 ^ 1) = 160 (*)
8 X (16 ^ 2) = 2048
Luego se suman todos los resultados, y el equivalente decimal a 7A8 hexadecimal resulta ser: 7+160+2048 = 2215
El código te lo dejo a vos ...
Ahora, tengo una duda: ¿Estás seguro que el valor analógico es hexadecimal? ¿No es binario?
(*) Recordar que en hexa: A=10, B=11, C=12, D=13, E=14, F=15
Marcadores