Numero ascii a carácter

Fernado de nuevo molestándote tengo este problema con esta función, quiero que partir de un numero me ponga que carácter es, pero después del caso en que el dígito es 9, le agregaría 56 dándome 65 que correponderia a la "A", pero me pone ";", no se que me esta fallando en esta función, la verdad tengo 4 horas trantado de hacerla y no he podido te agradecería si me ayudas
Function homoclave(digito As String) As String
Select Case digito
Case "0" To "8"
valordigito = Chr(digito+49)
Case "9" To "22"
valordigito = Chr(digito+56)
Case "23" To "33"
valordigito = Chr(digito+57)
End Select
homoclave = valordigito
End Function
Saludos
Víctor hugo
Sonora, mexico
1

1 respuesta

Respuesta
1
Aquí es muy tarde (00:25), ya así que seré breve:
Una vez más, tu problema está en definir variables que son claramente numéricas como "String" (alfanuméricas)
Si vas a evaluar números, usa Long o Integer. Y opera esas variables como números.
El valor que te arroja ";" es el 10 y aquellos que empiecen con 1 también tendrán problema porque en el select case serán considerados dentro del primer caso de "0" a "8" (porque "1" pertenence a ese grupo y no importa que valores le sigan)
La verdad no entiendo tu lógica para programar así, si hasta es más engorroso poner las comillas a cada número.
Por favor, no te ofendas, es una critica constructiva.
La siguiente función devuelve los valores correctos:
Function homoclave(digito As Long) As String
Select Case digito
Case 0 To 8
valordigito = Chr(digito + 49)
Case 9 To 22
valordigito = Chr(digito + 56)
Case 23 To 33
valordigito = Chr(digito + 57)
End Select
homoclave = valordigito
End Function
Reemplaza y pruébala
Ah! Por si acaso.
La siguiente fórmula standard de MS Excel devuelve el mismo resultado en la hoja:
=CARACTER(C3+SI(C3<9;49;SI(C3<23;56;57)))
Supuesto que tu valor estuviera en C3 y que separes argumentos con ";"
No es necesario programar una función en VBA (que además será más lenta) para obtener el mismo resultado.
Pero bueno, tal vez necesites aquel código para una función interna de algún proyecto de VBA.
Que tengas un buen fin de semana!
Fernando
Gracias fernado la verdad lo solucione definiendo la variable como single así si funciono, si en excel ya lo había hecho así pero la verdad todas las funciones que te he pedido las estoy corriendo en Visual Basic estoy programndo una pequeña aplicación para el calculo del RFC
Saludos
Víctor Hugo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas