Simplemente debes establecer la propiedad Align en tiempo de diseño (desde la ventana Propiedades) o en tiempo de ejecución (desdel mismo código fuente) a una de la siguientes propiedades:
vbAlignNone - 0 - Sin alineación
vbAlignTop - 1 - Alineado arriba (POR DEFECTO)
vbAlignBottom - 2 - Alineado abajo
vbAlignLeft - 3 - Alineado a la izquierda
vbAlignRight - 4 - Alineado a la derecha
El único problema que puede surgir al cambiar la alineación es que las dimensiones del ToolBar pueden desvirtuarse, por así decirlo.
Lo que ocurre es que al cambiar la alineación de arriba/abajo a izquierda/derecha el ancho del ToolBar sigue siendo el mismo (el ToolBar pasa a ocupar todo el formulario)
Y al cambiar la alineación de izquierda/derecha a arriba/abajo la altura del ToolBar sigue siendo la misma (el ToolBar pasa a ocupar todo el formulario).
Para solventar este problema, puedes utilizar el siguiente procedimiento que te he escrito. Lo que hace es comprobar si se produce un cambio de los comentados arriba e intercambia los valores de las dimensiones (ancho por altura) al almacenarlos en variables temporales. En el caso que el cambio de alineación no sea de los problemáticos, entonces se almacenan de forma normal.
Una vez hecho esto, cambia la alineación.
Acto seguido, comprueba cual es la nueva alineación.
Si es arriba o abajo solo se podrá modificar la altura. Se asigna la altura almacenada anteriormente.
Si es izquierda o derecha solo se podrá modificar la anchura. Se asigna la anchura almacenada anteriormente.
Si no tiene alineación, se asignan ambas dimensiones (altura y anchura).
Aquí tienes el procedimiento:
Private Sub ChangeToolBarAlign(ByRef ToolBarObj As Toolbar, ByVal NewAlign As Integer)
Dim H As Double
Dim W As Double
With ToolBarObj
If ((.Align = vbAlignLeft Or .Align = vbAlignRight) And (NewAlign = vbAlignTop Or NewAlign = vbAlignBottom)) Or _
((.Align = vbAlignTop Or .Align = vbAlignBottom) And (NewAlign = vbAlignLeft Or NewAlign = vbAlignRight)) Then
H = .Width
W = .Height
Else
H = .Height
W = .Width
End If
.Align = NewAlign
If (NewAlign = vbAlignTop Or NewAlign = vbAlignBottom) Then
.Height = H
ElseIf (NewAlign = vbAlignLeft Or NewAlign = vbAlignRight) Then
.Width = W
Else
.Height = H
.Width = W
End If
End With
End Sub
Como primer argumento toma el ToolBar cuya alineación deseas cambiar, y como segundo la nueva alineación que deseas asignarle. Los posibles valores los hemos visto al principio de este post.
Un posible uso, para alinear un ToolBar, llamado ToolBar1, a la izquierda y conservando las dimensiones, sería:
ChangeToolBarAlign Toolbar1, vbAlignLeft
Espero que te sirva.
Hasta otra,
Zoto