Jump to content

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.

Share this post


Link to post
Share on other sites

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. 

Share this post


Link to post
Share on other sites

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!

Edited by Marco Corrales

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 6254 personas - Aprender Excel - Total: 4.7 / 5