Como habilitar y deshabilitar button macros

Tengo un dilema tengo una macro que acabo de armar de las cuales tengo 3 button de las cuales deseo saber como puedo hacer para que cuando habrá el excel el button2 y 3 este desactivados y cuando le de click en el button1 se active el button2 pero el button 3 permanezca desactivado y cuando le de click en button 2 se active el button3. Coloque en el Private Sub Workbook_Open() button2. Enable=false pero sigue activo no se como activar y desactivar esos button.

Respuesta
1

Prueba con la propiedad visible si la pones en True esta visible y si la pones en False esta digamos invisible, te dejo un pequeño ejemplo ojala te sirva y lo puedas adaptar a tus controles.

Ejemplo

1 respuesta más de otro experto

Respuesta
1

Primero tienes que diferenciar entre un command button (control activex) y un boton1 (control de formulario), ambos aunque parecen iguales tienen propiedades diferentes, en los button no existe la propiedad para bloquear la macro, por eso no te funciona las instrucción para hacerlo se requiere de un truco, en la macro que a continuación pongo, el button 1 cuando se desactiva se asigna un valor en blanco al onaction que es la que activa la macro, con eso ya la macro esta anulada, para activarla a través de otro botón solo se le pone el nombre de la macro en este caso test, por cierto en office 2016 tienes que poner el nombre del libro y el nombre de la macro según la estructura, una forma más fácil es cambiar los button por control command y entonces ya puedes aplicar la propiedad enable.

Sub desactivar_boton()
If Application.Version < 16 Then
' version inferiores a 2016
'desactiva macro
    Worksheets("detalle").Buttons("button 1").Font.ColorIndex = 2
    Worksheets("detalle").Buttons("button 1").OnAction = ""
'activar macro
    'Worksheets("detalle").Buttons("button 1").Font.ColorIndex = 1
    ' Worksheets("detalle").Buttons("button 1").OnAction = "test"
Else
'version excel 16 o superior
    Worksheets("Test Sheet").Buttons("button_name").Font.Color = 0
    Worksheets("Test Sheet").Buttons("button_name").OnAction = "'Name of the workbook.xlsm'!my_macro_name"
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas