Problema con la funcion Chr

Iniciado por sircid, 9 Agosto 2006, 05:37 AM

0 Miembros y 1 Visitante están viendo este tema.

sircid

Hasta ahora utilize la funcion Chr para pasar a un valor decimal un valor hexadecimal.

Un ejemplo:
MsgBox Chr("&hC1")

El msgbox me devolvería el valor 193.

El problema que tengo ahora es al hacer esto:

MsgBox Chr("&hDA5D")

Usando la calculadora obtengo el valor 55901 que es el que esperé desde mi programa, pero me salta un error:

Error '5' en tiempo de ejecución :

Llamada a procedimiento o argument no válido.

¿Cómo puedo hacer para hacer lo que deseo?

Gracias!

-POLACO-

Usa estas dos funciones lo probe y funciona bien:

Option Explicit
Public Function BMeS(ByVal msb As String) As String
Dim salida
Select Case msb
Case "A"
salida = 10
Case "B"
salida = 11
Case "C"
salida = 12
Case "E"
salida = 14
Case "D"
salida = 13
Case "F"
salida = 15
Case 0 To 9
salida = msb
Case Else
salida = 0
End Select

BMeS = salida
End Function

Public Function PasarHexADec(ByVal Vhex As String) As String

'Declara las variables
Dim HE
Dim AA As String
Dim AB As String
Dim AC As String
Dim AD As String
Dim AE As String
Dim AF As String
Dim AG As String
Dim AH As String
Dim BitS As Integer

AA = 0
AB = 0
AC = 0
AD = 0
AE = 0
AF = 0
AG = 0
AH = 0


HE = UCase(Trim(Vhex))
BitS = Len(HE)
AA = Mid(HE, BitS, 1)
BitS = BitS - 1
If BitS = 0 Then GoTo 10
AB = Mid(HE, BitS, 1)
BitS = BitS - 1
If BitS = 0 Then GoTo 10
AC = Mid(HE, BitS, 1)
BitS = BitS - 1
If BitS = 0 Then GoTo 10
AD = Mid(HE, BitS, 1)
BitS = BitS - 1
If BitS = 0 Then GoTo 10
AE = Mid(HE, BitS, 1)
BitS = BitS - 1
If BitS = 0 Then GoTo 10
AF = Mid(HE, BitS, 1)
BitS = BitS - 1
If BitS = 0 Then GoTo 10
AG = Mid(HE, BitS, 1)
BitS = BitS - 1
If BitS = 0 Then GoTo 10
AH = Mid(HE, BitS, 1)

10

AA = BMeS(AA)
AB = BMeS(AB)
AC = BMeS(AC)
AD = BMeS(AD)
AE = BMeS(AE)
AF = BMeS(AF)
AG = BMeS(AG)
AH = BMeS(AH)


PasarHexADec = AA + AB * 16 ^ 1 + AC * 16 ^ 2 + AD * 16 ^ 3 _
+ AE * 16 ^ 4 + AF * 16 ^ 5 + AG * 16 ^ 6 + AH * 16 ^ 6


End Function

Private Sub Command1_Click()
Dim Numero As Variant
Numero = "&HDA5D"
MsgBox PasarHexADec(Numero)
End Sub



Aclaracion:(el code NO es mio)
Espero te sea util  .-.

"Del extasis a la agonia oscila nuestra historia,podemos ser lo mejor y tambien lo peor con la misma facilidad"
Bersuit Vergarabat

sircid

Funciona perfecto, muchas gracias!