Por que se me borran los formatos condicionales

Tengo un formulario para introducir, modificar, buscar, eliminar datos de una hoja en un rango de datos, pero en una de las columnas (stock) tengo un formato condicional con formato de iconos, pero siempre que trato de modificar un dato de una fila,, así sea la descripción, valor, precio, stock,, al modificarlo desde el formulario los círculos de colores que representan el estado del stock,, desaparecen,,

Entonces tengo que ponérselo manualmente para que aparezca otra ves. Estos iconos representativos los puse con formato condicional

¿Se le puede dar alguna instrucción al código del botón modificar para que no se borren los iconos de la columna stock y no desaparezcan al modificar el dato?

1 Respuesta

Respuesta
1

Eso no tiene por que suceder. Depende del código que usas para modificar. ¿Puedes pegar el código?

hola sr andy

te muestro el código

Private Sub CommandButton2_Click()    ' CODIGO PARA MODIFICAR DATOS desde el fomulario
    Dim Fila As Long
    Dim Final As Long
Sheets("INVENTARIO").Unprotect
If ComboBox1 = "" Then
MsgBox "Coloca algun dato para Modificar", vbOKOnly + vbInformation, "AVISO"
ComboBox1.SetFocus
Exit Sub
End If
    For Fila = 4 To 16
        If Hoja2.Cells(Fila, 2) = "" Then
           Final = Fila - 1
            Exit For
        End If
    Next
    For Fila = 4 To Final
       If ComboBox1.Text = Hoja2.Cells(Fila, 2) Then
            Hoja2.Cells(Fila, 2) = ComboBox1.Text  'CODIGO
            Hoja2.Cells(Fila, 3) = TextBox2        'descripciom
            Hoja2.Cells(Fila, 4) = TextBox3        'presentacion
            Hoja2.Cells(Fila, 5) = CDbl(Me.TextBox4.Text)    'pr compra
            Hoja2.Cells(Fila, 6) = CDbl(Me.TextBox5.Text)    ' pr venta
            Hoja2.Cells(Fila, 7) = Me.TextBox6              'stock
            Exit For
        End If
    Next
    Me.ComboBox1 = ""
    Me.TextBox2 = ""
    Me.TextBox3 = ""
    Me.TextBox4 = ""
    Me.TextBox5 = ""
    Me.TextBox6 = ""
Sheets("INVENTARIO").Protect
'Unload Me
End Sub

Si bien ese código podría mejorarse mucho, no veo razón para que haga lo que dices en tu pregunta. Lo mejor sera que me compartas el libro para observar el comportamiento con mis propios ojos porque de verdad no sé por que sucede.

Se podría mejorar,,, en que sentido,, pues lo que hace es solo modificar datos en la hoja

Te envío el enlace

Abres el formulario desde el botón "cargar datos" que esta en la hoja de inventario por el botón de productos, que esta en el menu tienda de artículos

Seleccionas un código, y le das buscar,, después modificas algún dato

https://drive.google.com/open?id=10-r93364xg222h6PiTcPsbhyFqP3htn2 

Perdón se me olvidaba

Para el soporte a visual, en el menu tienda ariculos, esta un botón "soporte"

Usuario: lug

passw : cretorno

La hoja de inventario, puede desactiva la protección con un botoncito verde en la parte superior izqq dice ACTIVAR

Ok Lug, tu problema es el problema de muchísima gente en este foro. No se de donde sacan los códigos, pero cuando quieres acceder al valor de un textbox tienes que especificarlo con .Value

Veo mucha gente en esta página que sus códigos dicen, por ejemplo:

Range("A1") = TextBox1

Eso es una mala practica y lleva a muchos problemas. No me di cuenta cuando pegaste el código (acostúmbrese a usar la etiqueta de código), ahora viendo el libro lo he notado.

Siempre siempre siempre acostúmbrese a usar el .Value, así:

Hoja2.Cells(Fila, 7).Value = Me.TextBox6.Value

El formato condicional evalúa valores, al no tener el TextBox6 asignado a un Integer, realmente lo que le estas pasando a la celda es un Boolean, por lo cual el formato condicional no lo entiende (no es que lo borre, sino que no lo entiende)

Otra cosa, no hay necesidad de poner Hoja2.Cells(Fila, 5) = CDbl(Me. TextBox4.Text)

La gente se confunde mucho con esto de los conversores de tipos. Eso es para convertir tipo de variables, no tipo de valor. La propiedad .Text debe evitarse siempre.

Te recomiendo siempre usar .Value y si lo que quieres en la celda es valor moneda, solo tienes que formatear la columna a valor moneda.

Eso entre otras cosas como esto:

For Fila = 4 To 16
   If Hoja2.Cells(Fila, 2) = "" Then
      Final = Fila - 1
      Exit For
   End If
Next

Son algunas de las cosas a las que me referia que se pueden mejorar en su codigo. Ese Loop es innecesaria, hay mejores variantes para obtener esa fila.

¡Gracias!

Aprecio tus recomendaciones, las tendré muy encuenta, pero debes saber que no soy programador,,

solo adpato codigos q encuentro por alli q me parecen sencillos y q hacen lo q busco, cuando no logro concretar algo pregunto alos expertos,,,

respecto al código

Hoja2.Cells(Fila, 5) = CDbl(Me. TextBox4.Text)

Si yo no le pongo el CDBl no me valida el formato moneda en la celda,, ya lo probé

Pues la idea es que el formato moneda me salga en el text del formulario y en la celda de la hoja.

tendre encuenta los .value   voy a coregir lo q pueda en el codigo,, sobre todo los nombres para las hojas y userform,,

Lo que dices sobre CDbl no es cierto. Si tu tienes una celda formateada para moneda no tienes que convertir el tipo.

Te lo demuestro en este video: video demo

Como puedes observar, uso el .Value como debe ser, la celda y su formato se encargan de poner el formato de moneda, no hay que convertir Texto a CDbl (conversión totalmente innecesaria)

¡Gracias! andy

Pero mejor lo dejo así como esta, intente hacer los cambios que me sugieres, y se volvió un chispero de errores, no me salio el formato moneda en la celda aunque lo tenga,, mejor le dejo los CDbl

Gracias

aporposito como haces esos demos, de captura de video,, usas cantasia??

es mejor es enviar fotos y texto

Perdón

El video

Es mejor que enviar fotos, es más practico

Uso la versión Pro de Gyazo que permite grabar 1 minuto de video y compartir. La versión gratis solo permite grabar unos pocos segundos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas