Casillas de Verificación, marcar desmarcar

Hola a todos, espero podáis ayudarme.

Tengo este formulario y necesito que si le doy clic a la casilla de Marcar/Desmarcar, me marque todas las casillas de verificación o me las desmarque.

La opción mas idónea seria, que no se sí se puede o no, seria que me preguntará cual quiero marcar y cual no.

1 respuesta

Respuesta
1

Puede aprovechar la información adicional del control para indicar si se debe marcar o desmarcar. Le preparé este ejemplo:

Observe que a el control "No tocar", indica que no se debe afectar al marcar la casilla "Marcar/Desmarcar", como muestra la figura.

Le coloqué el texto "No tocar" pero puede se cualquier texto. Ahora hago clic en la casilla "Marcar/Desmarcar" y obtengo:

Observe como quedan todos los controles marcados, el control "No tocar" ya estaba activado, si vuelvo hacer clic en la opción "Marcar/Desmarcar", este control continúa activado y los demás desactivados como muestra la primera figura.

CÓDIGO DE LA CASILLA "Marcar/Desmarcar"

Private Sub Verificación2_Click()
 Dim ctl As Control
  If Me.Verificación2.Value = True Then
    For Each ctl In Me.Controls
     If TypeOf ctl Is CheckBox And ctl.Tag = "" Then
       ctl.Value = True
      End If
    Next
  Else
     For Each ctl In Me.Controls
     If TypeOf ctl Is CheckBox And ctl.Tag = "" Then
       ctl.Value = False
      End If
    Next
  End If
End Sub

 Observe como utilizo la propiedad "Información adicional" del control para que solo se afecten las casillas que NO tengan información adicional.

¡Gracias! Eduardo funciona perfectamente.

Y ahora te quería preguntar si seria posible que me pidiera que controles quiero marcar

Claro que es posible, lo hago de la siguiente forma:

1. Asigno en información adicional del control la letra "N" para indicar que el control no se debe evaluar.

2. Asigno en información adicional del control la letra "P" para indicar que se debe preguntar si el control se actualiza.

3. Dejo sin información adicional del control para actualizar automáticamente.

NOTA: Trate de darle un nombre a cada casilla de verificación

FORMULARIO INICIAL

En el ejemplo dejé 3 casillas para las cuales se debe preguntar, observe que me pregunta si lo debo actualizar, para el ejemplo voy a responder NO en las 3 preguntas y obtengo:

Observe que me ha dejado las 3 casillas sin actualización. Solo lo hago para marcar, para desmarcar no lo creo necesario, sin embargo, es similar, basta con cambiar el True por False.

Código del evento al hacer clic en la casilla marcar/desmarcar

Private Sub Verificación2_Click()
 Dim ctl As Control
  If Me.Verificación2.Value = True Then
    For Each ctl In Me.Controls
     If TypeOf ctl Is CheckBox And ctl.Tag <> "N" Then
      If ctl.Tag = "P" Then
            If MsgBox("¿Actualiza el control? " & ctl.Name, vbQuestion + vbYesNo + vbDefaultButton2, "Actualizaar") = vbYes Then
             ctl.Value = True
            End If
       Else
         ctl.Value = True
      End If
     End If
    Next
  Else
     For Each ctl In Me.Controls
     If TypeOf ctl Is CheckBox And ctl.Tag = "" Then
       ctl.Value = False
      End If
    Next
  End If
End Sub

Este es el código nuevo con algunos ajustes:

Private Sub Verificación2_Click()
On Error Resume Next
 Dim ctl As Control
  If Me.Verificación2.Value = True Then
    For Each ctl In Me.Controls
     If TypeOf ctl Is CheckBox And ctl.Tag <> "N" Then
      If ctl.Tag = "P" Then
            If MsgBox("¿Actualiza el control? " & ctl.Name, vbQuestion + vbYesNo + vbDefaultButton2, "Actualizaar") = vbYes Then
             ctl.Value = True
            End If
       Else
        ctl.Value = True
      End If
     End If
    Next
  Else
     For Each ctl In Me.Controls
     If TypeOf ctl Is CheckBox And ctl.Tag <> "N" Then
       ctl.Value = False
      End If
    Next
  End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas