Frecuentemente se encuentran consultas acerca de 'errores' al trabajar con controles del tipo TextBox. Errores que no son tales si recordamos que esos controles guardan su información en formato 'Texto'.
Así por ejemplo, en el Video 38 se muestra la comparación entre 2 controles:
TextBox3 = "537" TextBox5 = "1032"
Si TextBox3 < TexBox5 -------> pinte el control de rojo .... pero veremos que no se pinta. Porque entre textos el primero es mayor.
Por lo tanto, ya sea para realizar cálculos entre estos controles y datos de la hoja o para realizar comparaciones se necesitará convertirlos al formato número según se requiera.
1 - Función VAL: convierte un texto en un valor numérico:
"537" -------> 537
"1432" ------> 1432
Pero si enviamos un valor numérico con decimales a un control TextBox, la función VAL truncará la parte decimal mostrando solamente la parte entera.
Por ejemplo: TextBox3 = 537,40 celda = 1430,50
Al realizar una suma: suma = VAL(TextBox3) + celda = 537 + 1430,50 = 1957,50 (lo correcto: 1967,90)
2 - Función CDBL: convierte 'texto' con decimales a valor numérico con decimales.
Por ejemplo: TextBox3 = 537,40 TextBox5= 1430,50
Al realizar una suma: suma = CDBL(TextBox3) + CDBL(TextBox5)
suma = 537,40 + 1430,50 = 1967,90)
IMPORTANTE: La función CDBL dará error si se intenta convertir el contenido de un control vacío. Por lo tanto habrá que contemplar ese posible error, siendo los siguientes ejemplos algunos de los modos posibles.
Ejemplo 1: colocando una instrucción On Error antes de manipular ese control vacío:
'colorear según condición del
resultado
On Error Resume Next
If CDbl(TextBox3) < TextBox5.Value Then
TextBox5.BackColor =
&HFF& '< rojo
ElseIf CDbl(TextBox3) = Range("G" & filx).Value Then
TextBox5.BackColor =
&H80FF& '=naranja
Else
TextBox5.BackColor = &HFFFF& '> amarillo
End If
Ejemplo 2: evaluar si el control está vacío y en ese caso tomar otra decisión. En este ejemplo se coloca 1 en la celda, sino el valor convertido del control TextBox16:
If TextBox16 <> "" Then
hox.Range("K" &
fily) = CDbl(TextBox16)
Else
hox.Range("K" & fily) = 1
End If
Ver VIDEO N° 38
No hay comentarios.:
Publicar un comentario