返回列表 上一主題 發帖

[發問] 20個相同功能ComboBox如何可以省工撰寫?

回復 2# PKKO

是這樣嗎?
  1. Dim Arr
  2. Private Sub ComboBox17_Change()
  3.     Dim i As Long
  4.     '找出相同姓名的延續
  5.     Name1 = ComboBox17.Value
  6.     For i = 1 To Range("A65536").End(xlUp).Row
  7.         If Range("A" & i) Like ComboBox17 & "*" Then
  8.             Name1 = Name1 & "," & Range("A" & i)
  9.         End If
  10.     Next
  11.     Arr = Split(Name1, ",")
  12.     UserForm1.ComboBox17.List = Arr
  13.     UserForm1.ComboBox17 = Arr(0)
  14. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# PKKO
   
表單的姓名欄位輸入:我
就會變成:我愛你
導致無法下拉選單~選別的名稱
要如何才可以輸入:我
但是不會自動帶出來後面的
請問你要帶出來的是什麼?
至於問題一 : 若有20個相同功能之程式碼,該如何撰寫?

請搜尋 討論區的內文 "物件模組" 看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 11# PKKO
第3#的程式碼不是這樣嗎?
  1. Dim Arr
  2. Private Sub ComboBox17_Change()
  3.     Dim i As Long
  4.     '找出相同姓名的延續
  5. .    Name1 = ComboBox17.Value   '輸入的字串
  6.     For i = 1 To Range("A65536").End(xlUp).Row
  7.         If Range("A" & i) Like ComboBox17 & "*" Then '儲存格字串的開頭與ComboBox17("輸入的字串")相同
  8.             Name1 = Name1 & "," & Range("A" & i)
  9.         End If
  10.     Next
  11.     Arr = Split(Name1, ",")
  12.     UserForm1.ComboBox17.List = Arr
  13.     UserForm1.ComboBox17 = Arr(0) ',下拉式選單 在第一個位置出現顯示你輸入的字串
  14. '點選下拉式選單,可以選擇"連勝文","連戰","連連看"
  15. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 13# PKKO
3#程式碼
ComboBox17 輸入"我好"之後, 點選 ComboBox17動作後的圖示 這是你要的效果嗎?

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 15# PKKO


   
是否可以不要自動帶出(因為自動帶出的~使用者必須要先刪除)
請說明(不了解:使用者必須要先刪除)
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 17# PKKO
用滑鼠選,不要用鍵盤選
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 19# PKKO
表單加一TextBox控制項 試試看
  1. Option Explicit
  2. Private Sub TextBox1_Change()
  3.     Dim i As Long, Name1, Arr
  4.     For i = 1 To Range("A65536").End(xlUp).Row
  5.         If Range("A" & i) Like Trim(TextBox1) & "*" And Trim(TextBox1) <> "" Then
  6.             Name1 = Name1 & "," & Range("A" & i)
  7.         End If
  8.     Next
  9.     Arr = Split(Mid(Name1, 2), ",")
  10.     With ComboBox17
  11.         If UBound(Arr) <> -1 Then
  12.             .List = Arr
  13.             .Value = Arr(0)
  14.         Else
  15.             .Clear
  16.         End If
  17.     End With
  18. End Sub
  19. Private Sub ComboBox17_Change()
  20.     ComboBox17.DropDown
  21. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2014-12-6 13:53 編輯

回復 21# PKKO

  1. Option Explicit
  2. Dim UserComboBox() As New Class1
  3. Private Sub UserForm_Initialize() '表單初始化的事件
  4.     Dim e As Control, i As Integer
  5.     For Each e In Me.Controls
  6.         If InStr(e.Name, "ComboBox") Then
  7.             ReDim Preserve UserComboBox(0 To i)
  8.             Set UserComboBox(i).xlComBox = e
  9.             i = i + 1
  10.         End If
  11.     Next
  12. End Sub
  13. Private Sub CommandButton1_Click()
  14.     Unload Me   '關閉表單
  15. End Sub
複製代碼
[ Class1 ] (物件類別模組)的程式碼
  1. Option Explicit
  2. Public WithEvents xlComBox As MSForms.ComboBox
  3. Private Sub xlComBox_DropButtonClick()  '按下ComboBox下拉箭頭按鈕
  4.     Dim i As Long, S As String, Name1 As String, Arr As Variant
  5.     If xlComBox.ListIndex > -1 Then Exit Sub
  6.     'ComboBox的值,不在ComboBox.List的清單中選取的: ComBox.ListIndex=-1
  7.     S = UCase(Trim(UserForm1.TextBox1))
  8.     For i = 1 To Range("A65536").End(xlUp).Row
  9.         If UCase(Range("A" & i)) Like S & "*" And S <> "" Then
  10.             Name1 = Name1 & "," & Range("A" & i)
  11.         End If
  12.     Next
  13.     Arr = Split(Mid(Name1, 2), ",")
  14.     With xlComBox
  15.         If UBound(Arr) > -1 Then
  16.             .List = Arr
  17.             .Value = Arr(0)
  18.         Else
  19.             .Clear
  20.         End If
  21.         .DropDown
  22.     End With
  23. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 真正的愛心,是照顧好自己的這顆心。
返回列表 上一主題