Saltar al contenido

checkbox checkeado si esta llena una celda


Recommended Posts

publicado

hola amigos tengo una pregunta que no se porque me causa confusion y espero ustedes me ayuden

¿como puedo hacer para que si una celda esta llena el checkbox esté checkeado y si esta vacia no lo este?

gracias y saludos

publicado

ok perdona si no me explique, y es que de hecho hace un tiempo me hiciste una aportacion buenisima maestro, pero la verdad uno siempre trata de adaptar el codigo que nos pasamos para poder aplicarlo a lo que necesitamos y poderle sacar jugo,

lo que intento hacer es que si la celda que se seleccione (deacuerdo al control o variable del archivo) el checkbox se ponga como true si la celda contiene algo, pero si no que el checkbox se ponga como false, la verdad si lo he intentado inclusive hasta con celdas fijas como un "cells(1,1)" pero no me da resultado. y en si esa es mi cuestion. ¿podrias ayudarme?. saludos

copiaBasee.rar

publicado

Hola, amigo. Esta es mi primera respuesta en este foro. Te he escrito el código que hace lo que requieres bajo la siguiente premisa:

- Asumo que una celda está vacía sólo si contiene la cadena nula "".

Dado que empleas una forma diferente a la que yo usaría para darle valores a los cuadros de texto presentes en el formulario cuando haces click en el ListBox, lo que hice fue crear un subprograma tipo Sub llamado "BuscarFilaID" para poder saber a cuál fila de la hoja corresponde el ID sobre el cual has hecho click en el ListBox.

Acá está el código del subprograma:

Public Sub BuscarFilaID(ID As String, blnAtendidoVacio As Boolean, PendienteVacio As Boolean)

Dim i As Long, UltimaFila As Long

UltimaFila = Range("K1").End(xlDown).Row

For i = 2 To UltimaFila

If ID = Worksheets("Hoja1").Range("K" & Format(i)).Value Then Exit For

Next i

If Worksheets("Hoja1").Range("L" & Format(i)).Value = "" Then

blnAtendidoVacio = True

Else

blnAtendidoVacio = False

End If

If Worksheets("Hoja1").Range("M" & Format(i)).Value = "" Then

PendienteVacio = True

Else

PendienteVacio = False

End If

End Sub

Luego, en el procedimiento de evento L_Click haga la llamada al subprograma, así:

Private Sub L_Click(): On Error Resume Next

Dim blnAtendidoVacio As Boolean, PendienteVacio As Boolean

For Each Control In Controls

If Control.TabIndex < L.ColumnCount Then

If TypeOf Control Is MSForms.TextBox Then

Control.Value = L.List(L.ListIndex, Control.TabIndex)

End If

End If

Next

Insertar.Enabled = False

Call BuscarFilaID(txtId.Text, blnAtendidoVacio, PendienteVacio)

If blnAtendidoVacio Then

CheckBox1.Value = 0

Else

CheckBox1.Value = 1

End If

If PendienteVacio Then

CheckBox2.Value = 0

Else

CheckBox2.Value = 1

End If

End Sub

- - - - - Mensaje combinado - - - - -

Hola, amigo. Esta es mi primera respuesta en este foro. Te he escrito el código que hace lo que requieres bajo la siguiente premisa:

- Asumo que una celda está vacía sólo si contiene la cadena nula "".

Dado que empleas una forma diferente a la que yo usaría para darle valores a los cuadros de texto presentes en el formulario cuando haces click en el ListBox, lo que hice fue crear un subprograma tipo Sub llamado "BuscarFilaID" para poder saber a cuál fila de la hoja corresponde el ID sobre el cual has hecho click en el ListBox.

Acá está el código del subprograma:

Public Sub BuscarFilaID(ID As String, blnAtendidoVacio As Boolean, PendienteVacio As Boolean)

Dim i As Long, UltimaFila As Long

UltimaFila = Range("K1").End(xlDown).Row

For i = 2 To UltimaFila

If ID = Worksheets("Hoja1").Range("K" & Format(i)).Value Then Exit For

Next i

If Worksheets("Hoja1").Range("L" & Format(i)).Value = "" Then

blnAtendidoVacio = True

Else

blnAtendidoVacio = False

End If

If Worksheets("Hoja1").Range("M" & Format(i)).Value = "" Then

PendienteVacio = True

Else

PendienteVacio = False

End If

End Sub

Luego, en el procedimiento de evento L_Click haga la llamada al subprograma, así:

Private Sub L_Click(): On Error Resume Next

Dim blnAtendidoVacio As Boolean, PendienteVacio As Boolean

For Each Control In Controls

If Control.TabIndex < L.ColumnCount Then

If TypeOf Control Is MSForms.TextBox Then

Control.Value = L.List(L.ListIndex, Control.TabIndex)

End If

End If

Next

Insertar.Enabled = False

Call BuscarFilaID(txtId.Text, blnAtendidoVacio, PendienteVacio)

If blnAtendidoVacio Then

CheckBox1.Value = 0

Else

CheckBox1.Value = 1

End If

If PendienteVacio Then

CheckBox2.Value = 0

Else

CheckBox2.Value = 1

End If

End Sub

copiaBasee.rar

publicado

me pareció buena tu explicación muy entendible y el archivo que me pasaste funciona perfectamente quisiera pedirte un ultimo favor solo que tengo que adaptar la rutina que me diste para el bton de "modificar" ya que concierne a los checkbox ¿me podrias ayudar con ese boton a tal manera que ese boton pueda cumplir su funcion?

publicado

Hola. Aquí sí voy a coincidir con Macro Antonio: te pido que seas más explicativo con lo que quieres hacer con ese botón "Modificar". Sin embargo, infiero que lo que deseas es que al seleccionar algún elemento en el cuadro ListBox, puedas reflejar en la hoja cualquier modificación que hagas en los cuadros de texto correspondientes. De ser así fíjate que ya eso no tiene nada que ver con el título con el que abriste este post: "checkbox checkeado si esta llena una celda".

publicado

hola serviprofer nuevamente te agradesco la aportacion y tienes razon creo que exagere al pedir eso, los errores muchas veces los cometemos por confucion, por desconocimiento o por negligencia pero solo puedo decir que no fue mi intencion pedir cosas que no vienen al tema, con respecto a lo que infieres si tienes razon eso era lo que queria hacer, y he aqui mi pregunta, ¿tendria que hacer otro post para poder hacer lo del boton "modificar"?, por consiguiente volviendo a agradecerte la aportacion.saludos

publicado

correcto, muchas gracias por todo serviprofer, con esto declaro tema solucionado

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.