O vamos por partes o no nos aclaramos, lo que quiero es que lo entiendas, y no que modifiques directamente tu programa, una vez que lo entiendas verás que es mil veces mas fácil de lo que por ahora lo complicas.
Vamos primero con el Grid
Crea un Formulario y pega en el tres controles Grid por omisión que los veas separados MsFlexGrid1, MsFlexGrid2 y MsFlexGrid3
Después copia y pega este código y ejecuta el programa.
Código:
Option Explicit
Private Sub Form_Load()
GridCabecera MSFlexGrid1, 0, 1000, "Col 0 Grid 1", "C"
GridCabecera MSFlexGrid1, 1, 1000, "Col 1 Grid 1", "C"
GridCabecera MSFlexGrid2, 0, 1000, "Col 0 Grid 2", "C"
GridCabecera MSFlexGrid2, 1, 1000, "Col 1 Grid 2", "C"
GridCabecera MSFlexGrid3, 0, 1000, "Col 0 Grid 3", "C"
GridCabecera MSFlexGrid3, 1, 1000, "Col 1 Grid 3", "C"
End Sub
Public Sub GridCabecera(Grid As MSFlexGrid, Columna As Single, AnchoTwips As Single, Titulo As String, Ajuste As String)
' Si la Columna no existe, la añadimos ya que de lo contrario se produciría un error
If Grid.Cols - 1 < Columna Then Grid.Cols = Columna + 1
Grid.ColWidth(Columna) = AnchoTwips
Select Case UCase(Ajuste)
Case Is = "I": Grid.ColAlignment(Columna) = 1 ' Izquierda
Case Is = "D": Grid.ColAlignment(Columna) = 7 ' Derecha
Case "C": Grid.ColAlignment(Columna) = 4 ' Centro
End Select
Grid.Row = 0
Grid.Col = Columna
Grid.CellAlignment = 4 ' Título siempre Centrado
Grid.Text = Titulo
End Sub
Seguramente que así lo veas mas claro.