返回列表 上一主題 發帖

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

回復 1# av8d
試試看


    關鍵字輸入範例..rar (10.25 KB)

TOP

回復 3# av8d
那在改一下了

關鍵字輸入範例..rar (11.42 KB)

TOP

本帖最後由 GBKEE 於 2012-6-27 10:36 編輯

回復 7# dechiuan999
Replace "*" & TextBox1 & "*", "=what this", xlPart
為何用"=what this",小弟有在工作表上的輸入值地方有看到  

就是沒有啊  會產生一個 #NAME?錯誤值
.SpecialCells(xlCellTypeFormulas, xlErrors).Name = "xxx"
此語法小弟一直不懂得如何去應用及驗證呢?

為何區域變數看不到
有此物件變數[XXX],
又此物件變數由何而來呢?


試試看 [A1:D10].NAME="dechiuan999"
到工作表 查看定義名稱 看看    [ 物件或函數 不可以為變數 ]

回復 5# av8d
  1. Private Sub UserForm_Initialize()
  2. With ActiveSheet
  3. .Range("b:b").AdvancedFilter xlFilterCopy, , .Cells(1, .Columns.Count), True
  4. 'AdvancedFilter 進階篩選: 不重複資料, 資料複製到其他位置
  5. ComboBox1.List = .Cells(1, .Columns.Count).CurrentRegion.Offset(1).Value '
  6. .Cells(1, .Columns.Count).EntireColumn = ""
  7. .Range("c:c").AdvancedFilter xlFilterCopy, , .Cells(1, .Columns.Count), True
  8. ComboBox2.List = .Cells(1, .Columns.Count).CurrentRegion.Offset(1).Value '
  9. .Cells(1, .Columns.Count).EntireColumn = ""
  10. End With
  11. End Sub
複製代碼

TOP

回復 9# av8d
沒有物件 那須先檢查  UserForm1 中有沒有TextBox1 看看

TOP

回復 12# av8d
附檔看看

TOP

回復 14# av8d
Option Explicit  主要是可避免打錯變數名稱 ,使得程式運行中,找不出錯誤在哪裡
Textbox  是表單內控制項的關鍵字, 要避免始用 .

TOP

本帖最後由 GBKEE 於 2012-6-28 17:48 編輯

回復 17# av8d
  1. Option Explicit
  2. Dim d As Object
  3. Private Sub UserForm_Initialize()
  4.     Dim A As Range
  5.     Set d = CreateObject("Scripting.Dictionary")
  6.     With ActiveSheet
  7.         For Each A In .Range("d2", .[d2].End(xlDown))
  8.           d(A.Value) = IIf(d(A.Value) = "", A.Offset(, 1).Value, d(A.Value) & "," & A.Offset(, 1))
  9.         Next
  10.         ComboBox1.List = d.KEYS
  11.     End With
  12. End Sub
  13. Private Sub ComboBox1_Change()
  14.     If ComboBox1.ListIndex > -1 Then
  15.         ComboBox2.List = Split(d(ComboBox1.Value), ",")
  16.         ComboBox2.Value = ComboBox2.List(0)
  17.     End If
  18. End Sub
複製代碼

TOP

回復 19# av8d
Dim d As Object 這程式碼 你放在哪裡   
如果如下宣告兩次
  1. Dim d As Object  '1 模組 的頂端 宣告變數  為此模組的私用變數  此模組中程序皆可用的變數
  2. Private Sub UserForm_Initialize()
  3.     Dim d As Object    '2 在程序中 宣告變數    '*** 這裡不要宣告了
  4.    Set d = CreateObject("Scripting.Dictionary")  
  5. '這d 是   UserForm_Initialize 程序的  並不是 模組頂端的d
複製代碼

TOP

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

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

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題