How to: Change the Column Widths of a Multi-Column List Box

Outlook Developer Reference

The following example uses the ColumnWidths property to change the column widths of a multicolumn ListBox. The example uses three TextBox controls to specify the individual column widths and uses the Click event to specify the units of measure of each TextBox.

To use this example, copy this sample code to the Script Editor of a form. To run the code you need to open the form so the Open event will activate. Make sure that the form contains:

  • A ListBox named ListBox1.
  • Three custom text fields named Text1, Text2, and Text3.
  • Three TextBox controls named TextBox1, TextBox2, and TextBox3 that are bound to the custom text fields above.
  • A CommandButton named CommandButton1.

Try entering the value 0 to hide a column.

  Dim MyArray(2, 3) 
Dim ListBox1
Dim TextBox1
Dim TextBox2
Dim TextBox3
Dim CommandButton1

Sub Item_Open() Dim i, j, Rows

Set ListBox1 = Item.GetInspector.ModifiedFormPages("P.2").ListBox1 Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").TextBox1 Set TextBox2 = Item.GetInspector.ModifiedFormPages("P.2").TextBox2 Set TextBox3 = Item.GetInspector.ModifiedFormPages("P.2").TextBox3 Set CommandButton1 = Item.GetInspector.ModifiedFormPages("P.2").CommandButton1

ListBox1.ColumnCount = 3 Rows = 2

For j = 0 To ListBox1.ColumnCount - 1 For i = 0 To Rows - 1 MyArray(i, j) = "Row " & i & ", Column " & j Next Next

ListBox1.List() = MyArray 'Load MyArray into ListBox1

TextBox1.Text = "1 in" '1-inch columns initially TextBox2.Text = "1 in" TextBox3.Text = "1 in"

End Sub

Sub CommandButton1_Click() 'ColumnWidths requires a value for each column separated by semicolons ListBox1.ColumnWidths = TextBox1.Text & ";" & TextBox2.Text & ";" & TextBox3.Text End Sub

Sub Item_CustomPropertyChange(ByVal Name) msgbox Name Select Case Name Case "Text1" 'ColumnWidths accepts points (no units), inches or centimeters; make inches the default If Not (InStr(TextBox1.Text, "in") > 0 Or InStr(TextBox1.Text, "cm") > 0) Then TextBox1.Text = TextBox1.Text & " in" End If Case "Text2" 'ColumnWidths accepts points (no units), inches or centimeters; make inches the default If Not (InStr(TextBox2.Text, "in") > 0 Or InStr(TextBox2.Text, "cm") > 0) Then TextBox2.Text = TextBox2.Text & " in" End If Case "Text3" 'ColumnWidths accepts points (no units), inches or centimeters; make inches the default If Not (InStr(TextBox3.Text, "in") > 0 Or InStr(TextBox3.Text, "cm") > 0) Then TextBox3.Text = TextBox3.Text & " in" End If End Select End Sub