Board logo

標題: [發問] 如何將UserForm中的ComboBox變成使用者功能? [打印本頁]

作者: av8d    時間: 2012-10-25 13:48     標題: 如何將UserForm中的ComboBox變成使用者功能?

以圖示舉例~
[attach]12888[/attach]

圖上的CheckBox皆屬於變動居多~
我想把CheckBox改成ComboBox~
方便修改變動資料~如何將UserForm中的ComboBox變成使用者功能?
作者: mark15jill    時間: 2012-10-25 14:41

本帖最後由 mark15jill 於 2012-10-25 14:44 編輯
以圖示舉例~


圖上的CheckBox皆屬於變動居多~
我想把CheckBox改成ComboBox~
方便修改變動資料~如何將 ...
av8d 發表於 2012-10-25 13:48


小弟的作法
如果今天有 表單A (例如 圖)  表單B(空白)
我會先將 表單A 所有內容(Caption ) 及 名稱 (Name) 匯出後
由 表單B 去接收 並列出 判斷
例如
表單A 之Checkbox 匯出
A1~ A10 = checkbox1.name ~ checkbox10.name  
B1~ B10 =  checkbox1.caption ~ checkbox10.caption

表單B 之 Combobox接收
list(1 to 10)  = A1~ A10
或 矩陣
List( 1 to 10  ,  1 to 10) = ( A1 ~ A10) , (B1 ~ B10)
作者: av8d    時間: 2012-10-25 14:49

回復 1# av8d


   找到了一個方法~如下
Private Sub UserForm_Initialize()
CheckBox51.Caption = 工作表2.[C2]
End Sub

但是如果要讓他跑迴圈~以下出了點問題
Private Sub UserForm_Initialize()
For i = 51 To 77
    Me.Controls("CheckBox" & i).Caption = 工作表2.["C" & i-49]
Next
End Sub

問題點在工作表2.["C" & i-49]
我想讓他
工作表2.[C2]
工作表2.[C3]
工作表2.[C4]
但是這個迴圈錯誤~我在研究看看~這問題我好像遇到過了~大大也解決過@@
作者: mark15jill    時間: 2012-10-25 15:00

回復 3# av8d

可以 用 r  和 r=r+1..

以下是一種方法.
  1. 'userform1
  2. Private Sub CommandButton1_Click()
  3.     For uu = 1 To 25
  4.         With Controls("Checkbox" & uu)
  5.             .Caption = Cells(uu + 1, 1)
  6.         End With
  7.     Next
  8.     UserForm1.Hide
  9.     UserForm2.Show
  10. End Sub

  11. Private Sub UserForm_Initialize()
  12.     Dim mycheckbox1 As MSForms.CheckBox
  13.     With UserForm1
  14.         .Width = 400
  15.         .Height = 400
  16.         .StartUpPosition = 2
  17.     End With
  18.     For soa = 1 To 400 Step 80
  19.         For sob = 1 To 400 Step 80
  20.             With UserForm1.Controls.Add("forms.checkbox.1")
  21.                 .Top = 10 + soa
  22.                 .Left = 10 + sob
  23.                 .Height = 50
  24.                 .Width = 50
  25.                 .Caption = .Name
  26.             End With
  27.         Next
  28.     Next

  29. End Sub
複製代碼
  1. 'userform2
  2. Private Sub UserForm_Initialize()
  3.     Dim mycombobox1 As MSForms.ComboBox
  4.     With UserForm2
  5.         .Height = 400
  6.         .Width = 400
  7.         .StartUpPosition = 2
  8.     End With
  9.     With UserForm2.Controls.Add("forms.combobox.1")
  10.         .Height = 40
  11.         .Width = 100
  12.         .Top = 10
  13.         .Left = 10
  14.         For us = 2 To 26
  15.             .AddItem (UserForm1.Controls("checkbox" & us - 1).Caption)
  16.         Next
  17.     End With
  18. End Sub
複製代碼

作者: mark15jill    時間: 2012-10-25 15:02

回復  av8d


   找到了一個方法~如下
Private Sub UserForm_Initialize()
CheckBox51.Caption = 工作 ...
av8d 發表於 2012-10-25 14:49



   至於 [c2]的話
可以試用 range("c2") 來使用
因為 [c2] 這方法 小弟比較不熟(羞愧)
作者: GBKEE    時間: 2012-10-26 08:09

回復 3# av8d
Me.Controls("CheckBox" & i).Caption = 工作表2.["C" & i-49]  你這裡出錯

回復 5# mark15jill
可以試用 range("c2") 來使用,因為 [c2] 這方法 小弟比較不熟

[ 工作表上 物件或名稱]     不可帶入變數
作者: av8d    時間: 2012-10-26 10:55

本帖最後由 av8d 於 2012-10-26 11:23 編輯

回復 6# GBKEE


    感謝兩位大大的幫忙~
我想請問G大一個問題~
如果是
Me.Controls("CheckBox" & i).ForeColor = 工作表2.Range("F" & i + 1)

所以我儲存格上必須是&XXXXXXXXX&
我儲存格上=IF(E2="","&H00E0E0E0&",IF(E2="男","&H00FFFFC0&",IF(E2="女","&H00FFC0FF&")))

可是他卻顯示"型態不符合"@@  要再次麻煩G大了!!謝謝!

補充~剛找到了一些線索 RGB(rs("red"), rs("green"), rs("blue")),似乎是沒用的線索 = =
作者: av8d    時間: 2012-10-26 11:50

回復  GBKEE


    感謝兩位大大的幫忙~
我想請問G大一個問題~
如果是
Me.Controls("CheckBox" & i) ...
av8d 發表於 2012-10-26 10:55



    找到原因了去掉一個&即可




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)