Manejo de variables con decimales en VBA.

Buenos días estimados, estoy realizando una macro la cual va a buscar un valor en una columna y a partir de ese valor encontrado va e imprime en un label el contenido de la celda que esta a continuación a su derecha. A continuación pego el código que estoy utilizando:

Sub NumeroProcedimiento()
Dim fila As Integer, columna As Integer, Respuesta As Integer
Dim Mensaje As String
ProbarNuevamente:
On Error GoTo EntradaErronea
Numero = InputBox("Por favor digite el número de procedimiento que desea ejecutar", "NUMERO DE PROCEDIMIENTO")
If Numero = "" Then
Exit Sub
End If
Columns("A:A").Select
Selection.Find(What:=Numero, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Selection.FindNext(After:=ActiveCell).Activate
UserForm1.Show
fila = ActiveCell.Row
columna = ActiveCell.Column
UserForm1.Label1.Caption = Cells(fila, columna + 1).Text
Exit Sub
EntradaErronea:
Mensaje = Err.Number & ": " & Error(Err.Number)
Mensaje = Mensaje & vbNewLine & vbNewLine
Mensaje = Mensaje & "Por favor asegúrese de haber digitado un número, que el mismo sea positivo y que coincida con un número de procedimiento"
Mensaje = Mensaje & vbNewLine & vbNewLine & "¿Desea probar nuevamente?"
Respuesta = MsgBox(Mensaje, vbYesNo, vbCritical)
If Respuesta = vbYes Then Resume ProbarNuevamente

El problema que se me está presentando es que cuando yo dígito el inputbox el valor 1.1 va y busca el valor 1.10 y cuando dígito 1.10 me da un error. Con los demás valores no tengo problemas, por lo que pienso que es un error en la declaración de la variable Numero la cual en la actualidad está con el tipo Variant. He probado dimensionarla como Double y me sale otro error.

Si alguien me pudiera ayudar, les estaría muy agradecido. Y de antemano muchas gracias.

1 respuesta

Respuesta
1

Prueba declarando tu variable de decimales como 'Double' y comentas.

Hola Abraham, gracias por responder. Pues te comento que ya traté con lo que tu mencionas, he tratado con Double, con String y nada. En un foro de VB leí algo a cerca de expresiones regulares, pero hasta el momento no tengo idea de como hacer eso en VBA :s. Gracias nuevamente!! (y)

Sin tus datos reales es complicado poder ayudarte mejor pero prueba asi:

Selection.Find(What:=Cdbl(Numero)...

Abraham

Hola Abraham, muchas gracias por tu valiosa ayuda. Te comento que logré modificar el código para que la macro hiciera justamente lo que necesitaba; en lugar de utilizar el objeto Columns, he utilizado el objeto Range y me ha ido bien. Muchas gracias nuevamente por tu ayuda e interés.

Slds,

David.

Añade tu respuesta

Haz clic para o