Hola:
Si comprendiste la idea, mira a ver si entiendes este ejemplo mejorado en el que le indicas en una sóla linea TODAS las columnas del Grid con sus formatos y títulos.
Necesitas insertar un sólo grid para probarlo.
Código:
Option Explicit
Private Sub Form_Load()
GridCabeceras MSFlexGrid1, "Código;1000;D", "Nombre;4000;I", "NIF;1000;D", "Fecha;1000;C"
End Sub
Public Sub GridCabeceras(Grid As MSFlexGrid, ParamArray Columnas() As Variant)
' Cada columna debe enviarse con el formato Titulo;Ancho;Ajuste
' Si la Columna no existe, la añadimos ya que de lo contrario se produciría un error
Dim Valores() As String
Dim Columna As Single, ValoresColumna As Variant
For Each ValoresColumna In Columnas
Valores = Split(ValoresColumna, ";")
If Grid.Cols - 1 < Columna Then Grid.Cols = Columna + 1
Grid.ColWidth(Columna) = Val(Valores(1)) ' Ancho
Select Case UCase(Valores(2)) ' 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 ' Siempre Centrado
Grid.Text = Valores(0) ' Título
' Incrementamos el valor de Columna aquí porque la primera es la 0
Columna = Columna + 1
Next
End Sub
Saludos