返回列表 上一主題 發帖

[發問] ListBox.ColumnWidths有辦法設定為自動欄寬嗎?

回復 1# PKKO
ListBox是Userform上的還是工作表上的?
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 1# PKKO
假設是指Userform上ListBox,
可利用暫時的TextBox來找出各欄最大寬度再設定
  1. Sub checkWashCar()
  2.   Dim arr(), rng, i%, j%, m%
  3.   aaa = WorksheetFunction.CountA(Rows("1:1"))
  4.   Me.ListBox1.ColumnCount = aaa
  5.   'Me.ListBox1.ColumnWidths = "60,100,60"
  6.   
  7.   rng = [a1].CurrentRegion
  8.   For i = 1 To UBound(rng)
  9.     If i = 1 Or rng(i, searchW) Like serchItem Then
  10.       m = m + 1
  11.       ReDim Preserve arr(1 To aaa, 1 To m)
  12.       For j = 1 To aaa
  13.         arr(j, m) = rng(i, j)
  14.       Next
  15.     End If
  16.   Next
  17.   Me.ListBox1.List = Application.Transpose(arr)

  18.   '新增以下code
  19.   Dim sWidth As String, dTotal As Double
  20.   Dim oTemp As Object
  21.   
  22.   Set oTemp = Me.Controls.Add("Forms.TextBox.1")
  23.   With oTemp
  24.     .AutoSize = True
  25.     .MultiLine = True
  26.     .WordWrap = False
  27.     .SelectionMargin = False
  28.     .Font.Name = Me.ListBox1.Font.Name
  29.     .Font.Size = Me.ListBox1.Font.Size
  30.   End With
  31.   
  32.   For j = 0 To Me.ListBox1.ColumnCount - 1
  33.     oTemp.Text = ""
  34.     For i = 0 To Me.ListBox1.ListCount - 1
  35.       oTemp.Text = oTemp.Text & Me.ListBox1.List(i, j) & vbCr
  36.     Next
  37.     dTotal = dTotal + oTemp.Width
  38.     sWidth = sWidth & oTemp.Width & ";"
  39.   Next
  40.   Me.Controls.Remove oTemp.Name
  41.   Me.ListBox1.Width = dTotal + Me.ListBox1.ColumnCount + 5
  42.   Me.ListBox1.ColumnWidths = sWidth
  43. End Sub
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 4# PKKO
1.  ListBox 控制項無分隔線設定,有興趣可找 ListView 控制項試試
2.  輸出到工作表,不懂你問題在哪,下面code就能簡單做到了
  1. Private Sub CommandButton2_Click()
  2.   Dim ar
  3.   
  4.   ar = Me.ListBox1.List
  5.   With Sheets(3).[A1].Resize(UBound(ar) + 1, UBound(ar, 2) + 1)
  6.     .Value = ar
  7.     .EntireColumn.AutoFit
  8.   End With
  9. End Sub
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 5# PKKO
Me.ListBox1.Width = dTotal + Me.ListBox1.ColumnCount + 5
這行是調整總寬度,要固定總寬度就不要加
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

        靜思自在 : 地上種了菜,就不易長草;心中有善,就不易生惡。
返回列表 上一主題