With the flexgrid, setting wordwrap to true does wrap the text, but the
problem is that the rowheight doesn't change.

Suggestion: Place an invisible textbox on your form and use it with the following code.

VB Code:
  1. Public Sub ReSizeCellHeight(MyRow As Long, MyCol As Long)
  2. Dim LinesOfText As Long
  3. Dim HeightOfLine As Long
  4.  
  5. 'Set MSFlexGrid to appropriate Cell
  6. OrderGrid.Row = MyRow
  7. OrderGrid.Col = MyCol
  8.  
  9. 'Set textbox width to match current width of selected cell
  10. txtAdjuster.Width = OrderGrid.ColWidth(MyCol)
  11.  
  12. 'Set font info of textbox to match FlexGrid control
  13. txtAdjuster.Font.Name = OrderGrid.Font.Name
  14. txtAdjuster.Font.Size = OrderGrid.Font.Size
  15. txtAdjuster.Font.Bold = OrderGrid.Font.Bold
  16. txtAdjuster.Font.Italic = OrderGrid.Font.Italic
  17. txtAdjuster.Font.Strikethrough = OrderGrid.Font.Strikethrough
  18. txtAdjuster.Font.Underline = OrderGrid.Font.Underline
  19.  
  20. 'Set font info of form to match FlexGrid control
  21. Me.Font.Name = MSFlexGrid1.Font.Name
  22. Me.Font.Size = MSFlexGrid1.Font.Size
  23. Me.Font.Bold = MSFlexGrid1.Font.Bold
  24. Me.Font.Italic = MSFlexGrid1.Font.Italic
  25. Me.Font.Strikethrough = MSFlexGrid1.Font.Strikethrough
  26. Me.Font.Underline = MSFlexGrid1.Font.Underline
  27.  
  28. 'Put the text from the selected cell into the textbox
  29. txtAdjuster.Text = Trim$(OrderGrid.Text)
  30.  
  31. 'Get the height of the text in the textbox
  32. HeightOfLine = Me.TextHeight(txtAdjuster.Text)
  33.  
  34. 'Call API to determine how many lines of text are in text box
  35. LinesOfText = SendMessage(txtAdjuster.hwnd, EM_GETLINECOUNT, 0&, 0&)
  36.  
  37. 'Check to see if row is not tall enough
  38. If OrderGrid.RowHeight(MyRow) < (LinesOfText * HeightOfLine) Then
  39. 'Adjust the RowHeight based on the number of lines in textbox
  40. OrderGrid.RowHeight(MyRow) = (LinesOfText) * HeightOfLine
  41. End If
  42. End Sub

Hope this helps...
ps: not my code. picked up from a website...