Para un Datagrid, es la colección Columns, indicando el número de columna (empiezan a numerarse desde la CERO), y usas la propiedad With, algo así:
DataGrid1.Columns(ColIndex).Width = longitud
agrega los siguientes controles al formulario:
boton = Command1
datagrid = datagrid1
adodc = adodc1
solo copia el codigo y ejecutalo
espero q te sirva y me avises al mail, suerte.
Public Sub Ajustar_Columna_DataGrid(un_DataGrid As DataGrid, _
Ado As Adodc, Optional AccForHeaders As Boolean)
Dim TempCol() As Integer
Dim Nregistros As Integer, NCampos As Integer
Dim Fila As Long, Col As Long, width As Single
Dim maxWidth As Single, celdaText As String
Dim saveFont As StdFont, oldScaleMode As Integer
'Variables para la cantidad de registros y columnas
Nregistros = Adodc1.Recordset.RecordCount
NCampos = Adodc1.Recordset.Fields.Count
'Array para almacenar el ancho de cada columna
ReDim TempCol(NCampos)
' Si el número de registros es igual a 0 salimos
If Nregistros = 0 Then Exit Sub
' Guardamos la fuente del DataGrid para luego reestablecerla
Set saveFont = un_DataGrid.Parent.Font
Set un_DataGrid.Parent.Font = un_DataGrid.Font
' Ajustar el ScaleMode en vbTwips para el formulario
oldScaleMode = un_DataGrid.Parent.ScaleMode
un_DataGrid.Parent.ScaleMode = vbTwips
'Movemos al Primer registro
Ado.Recordset.MoveFirst
maxWidth = 0
'Recorremos las columnas
For Col = 0 To NCampos - 1
Ado.Recordset.MoveFirst
If AccForHeaders Then
'Almacenamos el Ancho del texto de la columna
maxWidth = un_DataGrid.Parent.TextWidth _
(un_DataGrid.Columns(Col).Text) + 200
End If
Ado.Recordset.MoveFirst
'Recorremos los registros de esta columna
For Fila = 0 To Nregistros - 1
If NCampos = 1 Then
Else
celdaText = un_DataGrid.Columns(Col).Text
End If
'Almacena el Ancho del texto de la celda del Datagrid
width = un_DataGrid.Parent.TextWidth(celdaText) + 200
'Si el ancho de la celda es mayor se actualiza la variable maxWidth _
y se establece el ancho de la columna
If width > maxWidth Then
maxWidth = width
un_DataGrid.Columns(Col).width = maxWidth
End If
' Movemos el Ado al Siguiente registro
Ado.Recordset.MoveNext
Next Fila
'Almacenamos el ancho de la columna
TempCol(Col) = maxWidth
Next Col
'Recorremos cada columna y le asignamos el ancho
For Col = 0 To NCampos - 1
un_DataGrid.Columns(Col).width = TempCol(Col)
Next
'restablecemos la fuente del DataGrid y el scaleMode
Set un_DataGrid.Parent.Font = saveFont
un_DataGrid.Parent.ScaleMode = oldScaleMode
Ado.Recordset.MoveFirst
Erase TempCol
End Sub
Private Sub Command1_Click()
'Se le pasa al procedimento el control Datagrid, el control Ado _
los registros y los campos
Call Ajustar_Columna_DataGrid(DataGrid1, Adodc1, True)
End Sub
Private Sub Form_Load()
Me.Caption = " Ejemplo para ajustar el ancho de las columnas de un DataGrid "
End Sub