Destacar OptionButton al cargar formulario

Tengo un formulario con tres OptionButton y los tengo asignado a una misma celda. El valor al hacer click son 1,2 y 3 respectivamente. La idea es que al cargar el formulario me pueda mostrar activo el OptionButton que había asignado anteriormente, es decir si hago click en el OptionButton 2 y cierro el formulario, me muestre activo dicho OptionButton 2 al cargar el formulario.
Para cada OptionButton tengo esta macro
Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
Sheets("Hoja2").Range("A4").Value = "1"
'controlamos si se marca el control
End If
End Sub
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
Sheets("Hoja2").Range("A4").Value = "2"
'controlamos si se marca el control
End If
End Sub
Private Sub OptionButton3_Click()
If OptionButton3.Value = True Then
Sheets("Hoja2").Range("A4").Value = "1"
'controlamos si se marca el control
End If
End Sub
¿Me podrías indicar como se hace?

1 respuesta

Respuesta
1
Claro, debes guardar el estado de los OptionButton's en otra parte del libro, incluso puede ser celdas lejanas o en una columna para que no se vean.
Entonces cuando le des clic a uno de los OptionButton va a poner su celda a True y las otras 2 a False y cuándo se cargue el formulario pedimos los valores de esas celdas y los asignamos al Value de cada OptionButton.
En el ejemplo voy a guardar los valores o estados de cada OptionButton en las celdas B4, B5 y B6, así pues, además de asignar el valor a la celda A4 guardara el estado para la próxima vez que se cargue el formulario.
Private Sub UserForm_Activate()
    OptionButton1.Value = Sheets("Hoja2").Range("b4").Value
    OptionButton2.Value = Sheets("Hoja2").Range("b5").Value
    OptionButton3.Value = Sheets("Hoja2").Range("b6").Value
End Sub
Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
    Sheets("Hoja2").Range("A4").Value = "1"
    Sheets("Hoja2").Range("B4").Value = True
    Sheets("Hoja2").Range("B5").Value = False
    Sheets("Hoja2").Range("B6").Value = False
End If
End Sub
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
    Sheets("Hoja2").Range("A4").Value = "2"
    Sheets("Hoja2").Range("B4").Value = False
    Sheets("Hoja2").Range("B5").Value = True
    Sheets("Hoja2").Range("B6").Value = False
End If
End Sub
Private Sub OptionButton3_Click()
If OptionButton3.Value = True Then
    Sheets("Hoja2").Range("A4").Value = "3"
    Sheets("Hoja2").Range("B4").Value = False
    Sheets("Hoja2").Range("B5").Value = False
    Sheets("Hoja2").Range("B6").Value = True
End If
End Sub
Amigo, la macro la probé y me funcionó perfectamente, pero me asalta la siguiente duda. ¿Los CheckBox funcionan igual?, ya que tengo 2 CheckBox (1 y 2), pero no puedo hacer que aparezcan activos los que seleccione con antyerioridad después de abrir el formulario.
La siguiente macro es para que muestre u oculte un TextBox si activo o no la casilla.
Private Sub CheckBox1_Click()
'El CheckBox hará que aparezca o desaparezca el TextBox
If CheckBox1.Value Then
TextBox1.Visible = True
'Con esta el TextBox1 asumirá el nombre del CheckBox1
'TextBox1.Text = CheckBox1.Caption
ElseIf Not CheckBox1.Value Then
TextBox1.Visible = False
End If
End Sub
Private Sub CheckBox2_Click()
'El CheckBox hará que aparezca o desaparezca el TextBox
If CheckBox2.Value Then
TextBox2.Visible = True
'Con esta el TextBox2 asumirá el nombre del CheckBox2
'TextBox2.Text = CheckBox2.Caption
ElseIf Not CheckBox2.Value Then
TextBox2.Visible = False
End If
End Sub
Hasta aquí me funciona todo bien. El problema es que al abrir, seleccionar la casilla e ingresar los datos en los textbox me los guarda en la celda asignada pero no me los muestra al volver a abrir el formulario y las casillas aparecen sin activar y el textBox sigue oculto. La idea es que al llenar el textbox este siga visible y la casilla activa.
Esta macrto le asigné al boton Aceptar
Private Sub CommandButton1_Click()
Sheets("Hoja2").Range("a7").Value = CheckBox1.Value
Sheets("Hoja2").Range("a8").Value = CheckBox2.Value
'Para el caso que algun CheckBox no esté activado abrirá un mensaje
If CheckBox1.Value = 0 And CheckBox2.Value = 0 Then
MsgBox "Es necesario seleccionar uno de los Artefactos", vbOKOnly + vbExclamation  
End If
Unload Me
End Sub
La verdad es que he tratado de solucionarlo pero no se como.
Gracias amigo por tu paciencia
Funciona exactamente igual...
Te recomiendo que guardes el estado de los checkbox en el código de los CheckBox1_Click y CheckBox2_Click y no debes olvidar cargar su estado en la macro UserForm_Activate
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
    TextBox1.Visible = True
ElseIf Not CheckBox1.Value Then
    TextBox1.Visible = False
End If
Sheets("Hoja2").Range("a7").Value = CheckBox1.Value
End Sub
.........................................
Private Sub CheckBox2_Click()
If CheckBox2.Value Then
    TextBox2.Visible = True
ElseIf Not CheckBox2.Value Then
    TextBox2.Visible = False
End If
Sheets("Hoja2").Range("a8").Value = CheckBox2.Value
End Sub
............................................
Private Sub UserForm_Activate()
CheckBox1.Value = Sheets("Hoja2").Range("a7").Value
CheckBox2.Value = Sheets("Hoja2").Range("a8").Value
If CheckBox1.Value Then
    TextBox1.Visible = True
ElseIf Not CheckBox1.Value Then
    TextBox1.Visible = False
End If
If CheckBox2.Value Then
    TextBox2.Visible = True
ElseIf Not CheckBox2.Value Then
    TextBox2.Visible = False
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas