devxlogo

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"
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist