返回列表 上一主題 發帖

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

本帖最後由 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

回復 21# av8d

一般模組內呼叫表單物件,必須指明物件
例如:UserForm1.ComboBox1
學海無涯_不恥下問

TOP

回復 22# Hsieh


    謝謝大大~
我後來刪除Option Explicit~就可以了~
因為先前我沒有把每個變數都加上Dim宣告的動作~
因為宣告種類我還不熟悉~所以就沒去宣告@@

TOP

回復 21# av8d
由於我無法使用Option Explicit因為我大多數內容都沒+Option Explicit 導致變數我沒有一個一個去設定~一直出錯~
這是不好的習慣,要立即改掉
如圖 會在新模組中自動在頂端加入  Option Explicit

TOP

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

回復 18# GBKEE

原答案最後結果是當選到D欄CB的早餐~E欄CB只顯示豬肉牛肉
但是現在D欄的的CB的早餐內E欄CB的豬肉有兩筆希望只顯示一筆~如下
   
若D1=早餐  D2=午餐  D3=早餐  D4=早餐
若E1=豬肉  E2=雞肉  E3=牛肉  E4=豬肉

E1和E4重複~只顯示一筆~該如何結合呢?

TOP

回復 25# av8d
  1. ption Explicit
  2. Dim d As Object
  3. Private Sub UserForm_Initialize()
  4.     Dim A As Range, W As String
  5.     Set d = CreateObject("Scripting.Dictionary")
  6.     With ActiveSheet
  7.         For Each A In .Range("d2", .[d2].End(xlDown))
  8.             If d(A.Value) = "" Then
  9.                 d(A.Value) = A.Offset(, 1).Value
  10.             Else
  11.                 W = "," & d(A.Value) & ","   '字典物件內容前後加上 ,
  12.                 If InStr(W, "," & A.Offset(, 1) & ",") = 0 Then d(A.Value) = d(A.Value) & "," & A.Offset(, 1)
  13.                 'InStr(w, "," & A.Offset(, 1) & ",") = 0 比對字典物件內容有無A.Offset(, 1)的字串
  14.             End If
  15.         Next
  16.         ComboBox1.List = d.KEYS
  17.     End With
  18. End Sub
複製代碼

TOP

本帖最後由 av8d 於 2012-7-5 13:55 編輯

回復 26# GBKEE


    遇到另一個問題~請教大大

如果我想對A欄做相同範例
但是我只想取年Year()重複則只顯示一筆

例如:
A1=2012/06/25 A2=2012/10/10 A3=2013/8/8
所以只取年則是A1=2012 A2=2012 A3=2013
重複則只顯示一筆所以ComboBox1則會出現2012和2013的選項可以選擇

我修改了一下6樓大大的程式如下
    Dim d As Object, A
    Set d = CreateObject("Scripting.Dictionary")
    With ActiveSheet
        For Each A In .Range("a2", .[a2].End(xlDown))
          d(Year(A.Value)) = ""
        Next A
        ComboBox1.List = Application.Transpose(d.KEYS)
    End With
即可完成~不知這樣是否可行!?

TOP

回復 27# av8d
即可完成~不知這樣是否可行!?
你試了嗎? 有達到你的效果就可以阿.

TOP

本帖最後由 av8d 於 2012-7-11 12:09 編輯

回復 28# GBKEE


    G大~謝謝你~您寫的都可以使用~

TOP

回復 29# av8d
回復 28# GBKEE
附上我修正後之 GBKEE 大大的範例供你參考:
關鍵字輸入範例(GBKEE).rar (15.39 KB)

TOP

        靜思自在 : 人生沒有所有權,只有生命的使用權。
返回列表 上一主題