Here is what I have working for now. I see that your solution relies on the .Columns.AutoFit, since an array does not have an autofit, I have saved the longest array element to a very hidden ws, and then autosize that. It is working the way I need it to.
Private Sub UserForm_Initialize()
Dim cl As Range
Dim iMax As Long
Dim iPopCol As Long
Dim t_Array(17) As String
Dim bUseRowSource As Boolean
Dim rPopRange As Range
iPopCol = 3
t_Array(0) = "sadflkja;sldjf"
t_Array(1) = "asdfasd"
t_Array(2) = "asdf"
t_Array(3) = "asdfasdfasdfasdfas"
t_Array(4) = "sadflkja;sldjf"
t_Array(5) = "asdfasd"
t_Array(6) = "asdf"
t_Array(7) = "asdfasdfasdfasdfas"
t_Array(8) = "asdfasdfasdfasdfas"
t_Array(9) = "sadflkja;sldjf"
t_Array(10) = "asdfasd"
t_Array(11) = "asdf"
t_Array(12) = "asdfasdfasdfasdfas"
t_Array(13) = "sadflkja;sldjf"
t_Array(14) = "asdfasd"
t_Array(15) = "asdf"
t_Array(16) = "asdfasdfasdfasdfas"
maxlen = 0
For Z = 0 To 16
If Len(t_Array(Z)) > maxlen Then
maxlen = Len(t_Array(Z))
temp = t_Array(Z)
End If
Next
ThisWorkbook.Sheets("Sheet3").Cells(1, 1) = temp
With ThisWorkbook.Sheets("Sheet3")
Set rPopRange = .Range("A1")
rPopRange.Columns.AutoFit
For Each cl In rPopRange
With ListBox1
.AddItem (cl.Value)
If Len(cl) > iMax Then
iMax = Len(cl)
Label1.Caption = cl.Value
End If
.Font.Name = rPopRange.Font.Name
.Font.Size = rPopRange.Font.Size
End With
Next cl
MsgBox iMax
End With
ListBox1.Width = rPopRange.Width + 5
End Sub
Thanks much!