Porque al copiar un código que funciona bien las copias ddel codigodejan de funcionar correctamente. Excel VBA

Cree un código para validar los datos introducidos en el formulario.

El formulario es muy básico y solo se repite 1 código pero cambian los textbox a los que hace referencia. El problema me encuentro que el código (original, por llamarlo de alguna manera) funciona correctamente, pero cuando copio el código lo añado en otro textbox y reemplazo los textbox a los que se refiere no funciona correctamente. No me da ningún error, no toma el contenido del textbox (como si no hubiera nada) haciendo así que el condicional del código sea cierto y actúe como si no hubiera numero o el numero es inferior al anterior.

En la foto marco el textbox el cual estaba. El numero introducido ha de ser superior a anterior en este caso 93

El codigo que no funciona es este:

Private Sub CCT_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If CCT.Value <= CC2 Then
MsgBox ("Falta introduïr valor SUPERIOR respecte el tram anterior")
CCT.Value = Sheets("STOCK PAPER").Range("CCT")
Cancel = True
Exit Sub
Else
Sheets("STOCK PAPER").Range("CCT") = ""
Sheets("STOCK PAPER").Range("CCT") = CCT.Value
CCT.Enabled = False
CCT.BackColor = vbWhite
End If
End sub

y el que va es este:

Private Sub OASFT_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If OASFT.Value <= OASF2 Then
MsgBox ("Falta introduïr valor SUPERIOR respecte el tram anterior")
OASFT.Value = Sheets("STOCK PAPER").Range("OASFT")
Cancel = True
Exit Sub
Else
Sheets("STOCK PAPER").Range("OASFT") = ""
Sheets("STOCK PAPER").Range("OASFT") = OASFT.Value
OASFT.Enabled = False
OASFT.BackColor = vbWhite
End If
end sub

solo se ha de cambiar OASF por CC y EDITAR por EDITAR2, lo he hecho manualmente y con CONTROL+F y reemplazar y no se cual es el error

¿Qué hago mal?

2 Respuestas

Respuesta
1

Lo que pasa que el contenido en un textbox o en un combobox o en un label es un texto y excel no te permite realizar ciertas operaciones matemáticas con textos.

Por eso esta línea te envía error:

If CCT.Value <= CC2 Then

Estás comparando un valor con un texto.

Debes convertir el texto a valor numérico.

Lo que pusiste es correcto, ya que al declarar la variable num como integer, lo que reciba la variable num, si es un número, en automático VBA lo convierte a valor numérico.

También lo puedes simplificar así:

If CCT.Value <= Val(CC2.Caption) Then

Muchas gracias Dante por molestarte en explicarme el motivo y en enseñarme una forma simplificada para hacerlo.
Gracias por transmitir tu conocimiento con nosotros

Respuesta
1

He encontrado una solución pero no se esta bien resuelto o no.

En vez de comparrar CC2 he comparado una variable.

Modificando estas primeras líneas del código he logado que funcione por el momento, pero sigo sin saber porque no me funcionaba antes. Desde mi punto de vista debería ser lo mismo pero me gustaría saber el motivo para no cometer en un futuro este error

Dim numero as integer
numero=CC2.caption
If CCT.Value <= numero Then

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas