Saltar al contenido

CheckBox "multifuncional"


Recommended Posts

Buenas tardes, gusto saludarles.

Primero que nada comentarles que tengo toda la mañana investigando y recurro a ustedes en última instancia.

Tengo el siguiente código:

Private Sub lbl_aceptar_Click()

If ActiveCell.Address = "$E$115" Then
        If check_box_1.Value = True Then
            Hoja1.Range("$E$115").Value = check_box_1.Caption
        ElseIf check_box_2.Value = True Then
            Hoja1.Range("$E$115").Value = check_box_2.Caption
        ElseIf check_box_3.Value = True Then
            Hoja1.Range("$E$115").Value = check_box_3.Caption
        End If
End If

If ActiveCell.Address = "$I$115" Then
        If check_box_1.Value = True Then
            Hoja1.Range("$I$115").Value = check_box_1.Caption
        ElseIf check_box_2.Value = True Then
            Hoja1.Range("$I$115").Value = check_box_2.Caption
        ElseIf check_box_3.Value = True Then
            Hoja1.Range("$I$115").Value = check_box_3.Caption
        End If
End If

End Sub

Funciona muy bien, pero, me gustaría poder resumirlo y/o hacerlo "dinámico" con algo parecido a esto:

Private Sub lbl_aceptar_Click()

     ActiveCell.Value = MSForms.CheckBox.Checked.Caption

End Sub

Es decir, que la celda activa, tome como valor el caption del CheckBox seleccionado. Pero no me funciona; lo he intentado de varias maneras, pero no lo logro. Creo que lo que necesito, salvo mejor criterio, es saber cuál de los checkBox fue seleccionado por el usuario.

Quiero hacerlo general, para no tener que estar dando el nombre del CheckBox ni de la celda activa.

El formulario tiene varios CheckBox.

Les agradezco su ayuda.

Enlace a comentario
Compartir con otras webs

La próxima asegúrate de subir un archivo de ejemplo, hace mas sencillo poder ayudarte.

Sub lbl_aceptar_Click()
Dim ct As OLEObject

For Each ct In ActiveSheet.OLEObjects

    If TypeOf ct.Object Is MSForms.CheckBox Then
    
        If ct.Object.Value = True Then ActiveCell = ct.Object.Caption
        
    End If

Next

End Sub

Saludos. 

Enlace a comentario
Compartir con otras webs

Hola Alexander.

Gracias por tu ayuda!

Sí, tienes toda la razón, pero es que el archivo es demasiado grande y contiene información confidencial de mi trabajo.

Pero veo que comprendiste totalmente lo que necesitaba; sin embargo; cuando entra al For, se brinca el IF (no entra) y de una vez sale de la función.

Que será? Ya que ni siquiera me da un error!

Enlace a comentario
Compartir con otras webs

Para ampliar, el userform que contiene los checkBox en mención,  emerge cuando el usuario se posiciona en la siguientes celdas:

If Target.Address = "$E$115:$H$115" Or Target.Address = "$I$115:$L$115" Or Target.Address = "$D$38:$F$38" _
Or Target.Address = "$G$38:$I$38" Or Target.Address = "$J$38:$L$38" Then
    If frm_dias_pago.Visible = False Then
        frm_dias_pago.Show
    End If
End If

Por lo que no siempre está activo o visible en la hoja.

Lo comento por si eso fuese lo que está afectando el código que me enviaste.

Enlace a comentario
Compartir con otras webs

No se porque pensé que los Checkbox estaban en la hoja directamente, debería funcionar así entonces: 

Sub lbl_aceptar_Click()
Dim ct As Control

For Each ct In Me.Controls

    If TypeOf ct Is MSForms.CheckBox Then
    
        If ct.Value = True Then ActiveCell = ct.Caption
        
    End If

Next

End Sub

Saludos

Enlace a comentario
Compartir con otras webs

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.