bhe la soluzione più facile è sicuramente la seconda.
vai sull'evento Rowcolchange del datagrid e metti questo codice
datagrid1.Columns(lastcol).Widht = len(datagrid1.Columns(lastcol).text) * x
x dovrebbe esere uguale al valore di grandezza in punti di un carattere ascii...che sinceramente non ricordo...mi sembra dovrebbe essere uguale a 20....ma non ci metto la mano sul fuoco.
Guarda se così trovi soluzione