Generic Listbox Columns Routine

Generic Listbox Columns Routine

Use the SendMessage API to set tab stops in a VB listbox by creating these declarations and this routine in a module:

 Private Declare Function SendMessage Lib _	"user32" Alias "SendMessageA"(ByVal hWnd As _	Long, ByVal wMsg As Long, ByVal wParam As _	Long, lParam As Any) As LongPrivate Const LB_SETTABSTOPS = &H192Public Sub SetListTabStops(ListHandle As Long, _	ParamArray ParmList() As Variant)	Dim i As Long	Dim ListTabs() As Long	Dim NumColumns As Long	ReDim ListTabs(UBound(ParmList))	For i = 0 To UBound(ParmList)		ListTabs(i) = ParmList(i)	Next i	NumColumns = UBound(ParmList) + 1	Call SendMessage(ListHandle, LB_SETTABSTOPS, _		NumColumns, ListTabs(0))End Sub

Call the routine in Form_Load to set the tab stops where MyListBox is the listbox and the tab stop will be around the 12th character. Generally speaking, TabStop divided by four equals roughly the number of characters per column:

 Call SetListTabStops(lstMyListBox.hWnd, 48)

If more columns are needed, simply add them to the function call:

 Call SetListTabStops(lstMyListBox.hWnd, 48, 74, _	100)

Add items to the listbox using vbTab to separate columns:

 lstMyListBox.AddItem "Column1" & vbTab & "Column2"


Share the Post: