Para mostrar información en columnas en un listbox puedes separar los distintos datos mediante tabuladores (vbTab) y fijar los saltos de tabulación según te convenga.
Tienes que tener en cuenta que cuando estableces saltos de tabulación las unidades en que se indican son 1/4 del ancho medio de los caracteres de la fuente que tenga el diálogo en el que está el listbox. Para que quede bien añadiremos una unidad, es decir, si queremos "saltar" dos letras pondremos 9 : 4 x 2 (letras) + 1
Podemos establecer que por cada tabulador avance x unidades o indicar la lista de posiciones a las que debe saltar.
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const LB_SETTABSTOPS = &H192
Para que avance dos letras por cada tabulador :
L = SendMessage(List1.hwnd, LB_SETTABSTOPS, 1&, 9&)
Para establecer una serie de posiciones de salto debemos definir un tipo de dato cuyos campos sean de tipo long (también valdría una matriz de long) :
Type ListaTabuladores
tab1 As Long
tab2 As Long
tab3 As Long
End Type
Dim Tabuladores As ListaTabuladores
Y llamar a la función indicando el nº de posiciones de tabulación que tiene que tener en cuanta de la lista :
Tabuladores.Tab1 = 9:Tabuladores.Tab2 = 41:Tabuladores.Tab3 = 81
L = SendMessage(List1.hwnd, LB_SETTABSTOPS, 3&, Tabuladores)
De esta manera, por cada carácter chr$(9) que contenga el string que se añade al listbox irá saltando a la siguiente posición de tabulación. A la hora de poner múltiples columnas es conveniente que cada una tenga por lo menos un carácter más de la longitud máxima que podemos escribir en dicha columna.
Como le indicamos el ancho basándonos en el ancho medio de los caracteres de la fuente que esté utilizando el listbox es conveniente dejar un poco de más por si el campo contuviera muchas letras "anchas" como la m, la w, etc.
Por último comentar que los tabuladores deben estar ordenados ascendentemente.
Se acompaña un ejemplo para una más fácil comprensión :
En la pantalla aparecen dos listbox y un botón configurar. Al pinchar en él nos pide que indiquemos el número de columnas que queremos en el listbox y luego el número de caracteres máximo de ancho de cada una de las columnas.
Una vez metidos esos datos establece los saltos de tabulación en uno de ellos y rellena los dos listbox para que se vea la diferencia.