返回列表 上一主題 發帖

[發問] (謝謝恩師們,7/4完成) 關於自訂表單TextBox輸入關鍵字出現資料(附範例)

[發問] (謝謝恩師們,7/4完成) 關於自訂表單TextBox輸入關鍵字出現資料(附範例)

本帖最後由 av8d 於 2012-7-4 19:58 編輯

關於自訂表單TextBox輸入關鍵字出現資料(範例如下)
http://forum.twbts.com/viewthrea ... hlight=%C3%F6%C1%E4

在自訂表單製作一個TextBox3
若C1=100  C2=15
當TextBox3輸入"1"這個字~則會出現以上兩個選項可以點選

在自訂表單製作一個TextBox4
若D1=大房豆干  D2=大眾房屋
當TextBox4輸入"大"這個字~則會出現以上兩個選項可以點選

以此類推~謝謝各位大大的用心觀看

謝謝G大正向逆推思考的邏輯方式~超感激的!!謝謝你!!

回復 2# GBKEE


    大大的回覆真的是超級快@@ 由衷感謝~

想詢問一下~如果我希望當ComboBox選到想要的選項後TextBox自動填入該資料
我測試了很多次好像都不可以~

Sub ComboBox1_Click()
TextBox1=ComboBox1
End Sub

我好像想得太簡單了@@

TOP

本帖最後由 av8d 於 2012-6-26 22:37 編輯

回復 4# GBKEE


    謝謝大大~最後一次麻煩大大
請問ComboBox內的值若是重複~是否可以只顯示一筆?

TOP

回復 6# register313


    大大您好~如果我套用到我目前有寫了很多其他的裡面~
會出現錯誤'424'
此處需要物件

TOP

回復 10# GBKEE


    未命名2.jpg

TOP

本帖最後由 av8d 於 2012-6-27 10:24 編輯

好像就是卡到UserForm1的地方

TOP

回復 13# GBKEE


    大大~可以了~我看到許多大大都會使用Option Explicit
Option Explicit的意義是在程式模組中強迫每個在程式模組�堛瘍僂くㄔ眸楨�確完整的宣告和定義其名稱,範圍與型別.
Option Explicit 陳述式必須出現在模組中所有程序之前(即最頂端)
當 Option Explicit 在模組中使用時,所有的變數必須以 Dim, Private、Public、ReDim 或 Static 陳述式來明確宣告。
在模組中如果使用Option Explicit ,在程式中如未宣告變數的名稱,則在編譯階段時,會發生錯誤。
如果沒有使用 Option Explicit 陳述式,則所有未宣告的變數都是 Variant 型態,除非預設的型態另以 Deftype 陳述式所指定過。
Option Explicit 可避免打錯變數名稱或在有效範圍內設定兩個相同的變數名稱。


最主要是不是避免打錯變數名稱~但是這樣每次都必須用Dim, Private、Public、ReDim 或 Static 陳述式來明確宣告。
意思是不是說
如果我隨意設定
a=textbox1
for i =1 to 3
a=a+1
next i

這樣是否會出現錯誤~
我發現我之前所做的都沒用Option Explicit~現在要來一個一個除錯會不會還來的急嗎?

TOP

本帖最後由 av8d 於 2012-7-4 14:10 編輯

回復 6# register313

Private Sub UserForm_Initialize()

    Dim d As Object, A

    Set d = CreateObject("Scripting.Dictionary")

    With ActiveSheet

        For Each A In .Range("d2", .[d2].End(xlDown))

          d(A.Value) = ""

        Next A

        ComboBox1.List = Application.Transpose(d.keys)

        d.RemoveAll

        For Each A In .Range("e2", .[e2].End(xlDown))

          d(A.Value) = ""

        Next A

        ComboBox2.List = Application.Transpose(d.keys)

    End With

End Sub
---------------------------------------------------------------------
ComboBox1 = D欄
ComboBox2 = E欄

若D1=早餐  D2=午餐  D3=早餐
若E1=豬肉  E2=雞肉  E3=牛肉

當ComboBox1選到早餐的時候,ComboBox2是否能只顯示豬肉和牛肉,因為雞肉是午餐的所以過濾該筆。

TOP

本帖最後由 av8d 於 2012-6-28 21:06 編輯

回復 18# GBKEE


問題解決~謝謝!

TOP

本帖最後由 av8d 於 2012-6-28 22:40 編輯

回復 20# GBKEE


    由於我無法使用Option Explicit因為我大多數內容都沒+Option Explicit
導致變數我沒有一個一個去設定~一直出錯~所以我打算改到Module
然後用Call的方式呼叫~可是會出錯~在Module的寫法是否也差異?

Option Explicit
Dim d As Object
Sub UFI()
    Dim A As Range
    Set d = CreateObject("Scripting.Dictionary")
    With ActiveSheet
        For Each A In .Range("d2", .[d2].End(xlDown))
          d(A.Value) = IIf(d(A.Value) = "", A.Offset(, 1).Value, d(A.Value) & "," & A.Offset(, 1))
        Next
        ComboBox1.List = d.KEYS
    End With
End Sub
Sub CBC()
    If ComboBox1.ListIndex > -1 Then
        ComboBox2.List = Split(d(ComboBox1.Value), ",")
        ComboBox2.Value = ComboBox2.List(0)
    End If
End Sub

我利用Call呼叫UFI或CBC都會出錯~卡到變數問題~

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題