Barras de herramientas

Un saludo, ggleb. Me gustaría que me ayudaras con la siguiente situación:
1)Tengo configuradas a mi gusto las barras de herramientas de Excel, y deseo que se mantengan así.
2)Estoy programando una hoja que, entre otras cosas, oculta o modifica las barras de herramientas disponibles para trabajar con ella.
3)Deseo que, al salir de la hoja en cuestión, se restablezca la configuración original de las barras de herramientas.
4)Estoy más perdido que un pulpo en un garaje.
Por ello, te agradecería infinitamente una ayuda al respecto. Gracias de antemano.

1 Respuesta

Respuesta
1
Todavía me estoy riendo al imaginarme un pulpo agarrando aceite, líquido de frenos,...
Para modificar la barra de herramientas como tú quieres, debes colocar el código en Worksheet_Activate() o en Workbook_Activate(), para que se active automáticamente al activar la hoja o el libro respectivamente, y el código para restablecer la barra en Worksheet_Deactivate() o en Workbook_Deactivate(). Si no sabes cómo hacer esto, avísame.
Una barra de herramientas la ocultas con el siguiente comando:
Application.CommandBars("Formatting").Visible = False
(para mostrarla cambias False por True).
El mismo comando utilizas si has creado una barra personalizada para mostrar u ocultar, cambiando el nombre "Formatting" por "Personalizada1" por ejemplo.
Si quieres agregar un control dentro de una barra, el código se puede complicar:
Application.CommandBars("Standard").Controls.Add Type:=msoControlButton, Id:=399, Before:=16
Para restablecerla:
Application. CommandBars("Standard"). Reset
Esperando que te orientes un poco, te mando un saludo,
Gustavo
Muchas gracias, Gustavo. Por si tienes curiosidad por ver cómo he resuelto el problema, te escribo el listado a continuación. Básicamente, meto las barras del usuario en un array mientras trabajo con mi libro, y luego, al salir de él, las restauro.
Dim listabarras(1 To 50) As Byte 'Hay 50 barras en Excel disponibles
Sub GuardaConfig()
'para almacenar la configuración de barras del usuario
Dim t, posicion As Byte
posicion = 1
For t = 1 To 89 'Hay 89 barras en Office
On Error Resume Next
If Application.CommandBars(t).Visible = True Then
listabarras(posicion) = t 'la posición "posicion"
'del array "listabarras"
'almacena el número índice
'de una barra visible
posicion = posicion + 1 'pasa a la siguiente posición
'del array
End If
Next
End Sub
Sub RestauraConfig()
'para restaurar la configuración de barras del usuario
Dim t, posicion As Byte
For posicion = 1 To 50
On Error Resume Next
t = listabarras(posicion)
If t > 0 Then
Application.CommandBars(t).Visible = True
End If
Next
End Sub
Un saludo. Te preguntaré más cosas, no lo dudes.
José Miguel.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas