Como bloquear Frame en UserForm y habilitar con Checkbox

Desde ya gracias por la ayuda que me brindan con el desarrollo de esta aplicación, ahora mi objetivo es que al tener el listbox lst_ES que utilizo con textbox igual a PENDIENTE el Frame que contiene los Datos del Libro se bloquee para no poder introducir más registros. Y que al activar el Checkbox, se active nuevamente el Frame

1 Respuesta

Respuesta
1

No entendí si el Frame siempre estará como bloqueado y recién con el checkbox se va a desbloquear.

¿Quizás lo tengas bloqueado desde el evento Initialize del UF?

Otra opción posible sin necesidad del checkbox es que lo tengas bloqueado hasta mover un dato al listbox <> de PENDIENTE y recién entonces desbloquearlo. Sería en el evento 'Exit o Afterupdate del lst con esta instrucción:

If lst_ES.lista(0) <> "PENDIENTE" Then Frame1.Enabled = True

Sdos!

Estimada experta:

El Frame se bloquearía sí el valor del listbox_ES, es igual a Pendiente, en caso contrario (listbox_ES, igual a Activo: Frame desbloqueada

Saludos cordiales

Blás

Entonces Sería en el evento 'Exit o Afterupdate del lst con esta instrucción:

If lst_ES.lista(0)  ="PENDIENTE" Then

Frame1.Enabled = false

Else

Frame1.Enabled = True

End If

Sdos!

Estimada Elsa:

El código me arroja un error, subíndice fuera del intervalo  

Ese mensaje es cuando no encuentra un control, hoja o libro.

Aparentemente los nombres están correctos pero tampoco veo en qué línea te está marcando el error... quizás no sea en esta macro.

Si no lo encontrás enviame nuevamente el libro para revisarlo y de paso tenerlo por si veo otras consultas tuyas y pueda resolverlas.

Sdos!

Estimada Experta:

Ya te he vuelto a enviar mi archivo a tu e-mail

Gracias por la ayuda

Saludos cordiales

Blás

Bien, el lst_ES recibe el texto de otro control, entonces tenés que agregar la instrucción en ese otro control.

Private Sub cbm_NCI_Change()  y en Private Sub cbm_US_Change()

Luego de las instrucciones que le asignan color, agregá estas otras que según el texto se mostrarán o no los otros 2 frames.

'habilitr o no el frame:
If lst_ES.List(0) = "PENDIENTE" Then
    grb_DL.Enabled = False
    grb_DLAR.Enabled = False
    CheckBox1.Value = False    'opcional
Else
    grb_DL.Enabled = True
    grb_DLAR.Enabled = True
    CheckBox1.Value = True     'opcional
End If

Si no vas a utilizar un checkbox retirá las líneas que puse como 'opcional'.

Si además vas a colocar un checkbox para mostrar estos frames aún estando en 'Pendiente' también le tenés que colocar su código:

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
    grb_DLAR.Enabled = True
    grb_DL.Enabled = True
Else
    grb_DLAR.Enabled = False
    grb_DL.Enabled = False
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas