Alinear barras personalizadas

13/09/2006 - 20:20 por Ivan | Informe spam
Hola a todos.

a ver si me podeis echar una mano con esta nueva duda:

tengo 4 barras de herramientas creadas en el evento open y eliminadas
en before_close. El problema viene cuando intento alinearlas en la
parte superior. Me explico:

me gustaria alinearlas en la parte superior de la ventana ( de momento
van debajo de una fila de barras integradas con algunos comandos de
excel, pero probablemente estas tambien las oculte, dejando solo las
personalizadas), una detras de otra.

lo he intentado con msoBarTop, pero me las coloca unas debajo de
otras. Tambien he probado a darlas una posicion determinada, pero
entonces creo que las considera flotantes y las coloca con barra de
titulo. Bueno he hecho alguna prueba mas con otras constantes , pero de
momento sin resultado. No se si existe alguna forma de "acoplar" varias
barras seguidas.

aqui va parte del codigo de WorkBook_Open con varias combinaciones que
he intentado, algunas puestas como comentario

Private Sub Workbook_Open()
Dim MiBarra1 As CommandBar, MiBarra2 As CommandBar
Dim MiBarra3 As CommandBar, MiBarra4 As CommandBar
Application.ScreenUpdating = False
Set MiBarra1 = Application.CommandBars.Add
With MiBarra1
.Name = "BarraVer"
.Position = msoBarTop
' .Top = 50
' .Left = 0
.Visible = True
End With
Set MiBarra2 = Application.CommandBars.Add
With MiBarra2
.Name = "BarraAcciones"
' .Position = msoBarTop
.Top = MiBarra1.Top
.Left = MiBarra1.Width
.Visible = True
' .Top = 24
' .Left = 339
End With
Set MiBarra3 = Application.CommandBars.Add
With MiBarra3
.Name = "BarraCambios"
.Top = MiBarra1.Top
.Left = MiBarra1.Width + MiBarra2.Width
' .Position = msoBarTop
.Visible = True
End With
Set MiBarra4 = Application.CommandBars.Add
With MiBarra4
.Name = "BarraActualizaciones"
' .Top = 76
' .Left = 0
' .Position = msoBarTop
.Visible = True
End With
Call AñadirBotonesABarras
'
'
End sub

Como siempre, si podeis echarme una mano os lo agradezco.

Un saludo y hasta pronto
Ivan
 

Leer las respuestas

#1 Héctor Miguel
14/09/2006 - 05:35 | Informe spam
hola, Ivan !

tengo 4 barras de herramientas creadas en el evento open y eliminadas en before_close.
El problema... me gustaria alinearlas en la parte superior de la ventana
(de momento van debajo de una fila de barras integradas con algunos comandos de excel
pero probablemente estas tambien las oculte, dejando solo las personalizadas), una detras de otra.
lo he intentado con msoBarTop, pero me las coloca unas debajo de otras.
Tambien he probado a darlas una posicion determinada, pero entonces creo que las considera flotantes y las coloca con barra de titulo...



para que varias comandbars 'estacionadas' puedan 'compartir' la misma linea en su 'dock-area'...
es necesario utilizar la propiedad .RowIndex y... -> moverlas en orden inverso a como necesites que se 'estacionen [me explico]:
la barra que se muestra primero... es la mas recientemente asignada a una misma posicion '.RowIndex' [p.e.]

suponiendo 4 barras personalizadas, el siguiente codigo las manda a la misma linea estacionaria y las deja 'por orden'...

With Application
.CommandBars("barra4").Position = msoBarTop
.CommandBars("barra3").Position = msoBarTop
.CommandBars("barra3").RowIndex = .CommandBars("barra4").RowIndex
.CommandBars("barra2").Position = msoBarTop
.CommandBars("barra2").RowIndex = .CommandBars("barra3").RowIndex
.CommandBars("barra1").Position = msoBarTop
.CommandBars("barra1").RowIndex = .CommandBars("barra2").RowIndex
End With

saludos,
hector.

Preguntas similares