- 帖子
- 549
- 主題
- 152
- 精華
- 0
- 積分
- 691
- 點名
- 0
- 作業系統
- WIN7
- 軟體版本
- OFFICE 2010
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2013-8-10
- 最後登錄
- 2022-9-7
 
|
本帖最後由 PKKO 於 2015-5-22 22:08 編輯
回復 27# bobomi
大大,我只能說您太神了!
這個自己拉的方式非常棒!
優點如下:
一、比妳之前的只有拉高度才會變更比例的好
二、可以有儲存功能
三、比例即便有問題也可以解決(文字原本顯示四個字,只有出現三個字,現在也可自行靠拉寬一點就顯示出來正確比例,所以四個字都可以顯示)
目前嘗試之後發現以下問題
1.若是有變更ListBox並且,自動調整欄位時,程式碼會崩潰在下方開頭的位置- ocx.Left = ocx_xy(0) * Rw
- ocx.Top = ocx_xy(1) * Rh
- ocx.Width = ocx_xy(2) * Rw
- ocx.Height = ocx_xy(3) * Rh
複製代碼 A:我目前已有簡陋的解決方式,在啟動更新listBox 的時候checkUpdate = True
然後在Private Sub UserForm_Layout() 的第一行輸入 If checkUpdate = True Then checkUpdate = False: Exit Sub
這樣更新listBox的時候就不會執行,等到listbox結束之後他又會再更新一次畫面就OK了,因次第一個問題得到一個完美但簡陋的解決方式
附上我自己寫的listbox 快速使用程式碼- Function LIST顯示(UserForm, LISTBOX, RNG)
- checkUpdate = True
- '將資料顯示在LISTBOX 上
- LISTBOX.ColumnCount = UBound(RNG, 2)
- LISTBOX.List = RNG 'ListBox 的顯示方式
- '自動調整的程式
- '新增以下code
- Dim sWidth As String, dTotal As Double
- Dim oTemp As Object
-
- Set oTemp = UserForm.Controls.Add("Forms.TextBox.1")
- With oTemp
- .AutoSize = True'在這行程式碼的地方會啟動Private Sub UserForm_Layout()導致錯誤
- .MultiLine = True
- .WordWrap = False
- .SelectionMargin = False
- .Font.Name = LISTBOX.Font.Name
- .Font.Size = LISTBOX.Font.Size
- End With
-
- For j = 0 To LISTBOX.ColumnCount - 1
- oTemp.Text = ""
- For i = 0 To LISTBOX.ListCount - 1
- oTemp.Text = oTemp.Text & LISTBOX.List(i, j) & vbCr
- Next
- dTotal = dTotal + oTemp.Width
- sWidth = sWidth & oTemp.Width + 10 & ";"
- Next
- UserForm.Controls.Remove oTemp.Name
- LISTBOX.ColumnWidths = sWidth
- End Function
複製代碼 2.若我有4個userForm,要如何自動存取同一個GetSetting、SaveSetting,讓四個視窗的大小都會相同
A:目前我還在研究這個部分 |
|