I need to display information read from a database in a table in a VBA userform (MS Excel). I am aware of MSFlexGrid, and have tried to use it, but I have ran into a brickwall due to its well documented limitations. The following are the features I need from the table/grid control:

-row-based event detection (mouseover, mouse clicks, etc)
-ability to choose between, on a per-column basis:
Automatic resizing of column-widths if text in a row is too long
OR
Text wrapping if string in a row is too long for a defined column-width
-Column sort
-Automatic vertical scrollbar if number of rows is large
-Ability to have hidden columns
-Freeware!

Are there any controls that exist out there that have all of these abilities? Do you have any other solutions for displaying data in a grid in a VBA userform? Thanks for your help.