返回列表 上一主題 發帖

[發問] 可自定表單 全文檢索?

回復 2# register313
可如此


全文檢索.rar (499.19 KB)

TOP

回復 5# user999
使用  Option Compare 陳述式  在模組層次中用來宣告當比較字串資料的比對方式.
請在表單模組頂端 加上 Option Compare Text    可以不分大小寫來比對

TOP

回復 10# dafa
2欄什麼? 請上傳範例

TOP

回復 12# dafa
你不做個範例上傳,真的不知要如何回答.

TOP

回復 14# dafa
  1. Private Sub UserForm_Initialize()
  2.      With ListBox1
  3.         .Visible = False
  4.         .ColumnCount = 4                '指定下拉式清單方塊或清單方塊的顯示行數。
  5.         .ColumnWidths = "370,40,40,40"  '指定多行下拉式清單方塊或清單方塊中的各行寬度。
  6.     End With
  7. End Sub
  8. Private Sub ListBox1_Change()
  9.     AA = Application.Index(ListBox1.List, ListBox1.ListIndex + 1)  '陣列中抽出指定的元素陣列(這裡是一維陣列)
  10.     Label2.Caption = "[" & Join(AA, "] ; [") & "]"                  'Join 結合一維陣列的文字
  11. End Sub
  12. Private Sub TextBox1_Change()
  13.     Dim Ar(), E As Range
  14.     If TextBox1 <> "" Then
  15.         ReDim Ar(0)
  16.         For Each E In Sheet1.UsedRange.Columns(1).Cells
  17.             If E Like "*" & TextBox1 & "*" Then
  18.                 Ar(UBound(Ar)) = E.Resize(, 4).Value
  19.                 ReDim Preserve Ar(UBound(Ar) + 1)
  20.             End If
  21.         Next
  22.         If UBound(Ar) > 0 Then
  23.             ReDim Preserve Ar(UBound(Ar) - 1)
  24.             Ar = Application.Transpose(Application.Transpose(Ar))
  25.             ListBox1.List = Ar
  26.             ListBox1.Visible = True
  27.         Else
  28.             Label2.Caption = ""
  29.             ListBox1.Visible = False
  30.         End If
  31.     Else
  32.         Label2.Caption = ""
  33.         ListBox1.Visible = False
  34.     End If
  35. End Sub
複製代碼

TOP

回復 17# dafa
  1. If E Like "*" & TextBox1 & "*" Then     
  2.                 Ar(UBound(Ar)) = E.Resize(, 4).Value  '***一維陣列Ar 加入子元素 -> E.Resize(, 4).Value  ※此子元素 是為( 1, 4 )二維陣列                 ReDim Preserve Ar(UBound(Ar) + 1)
複製代碼
  1. If UBound(Ar) > 0 Then
  2.             ReDim Preserve Ar(UBound(Ar) - 1)
  3.             'Ar = Application.Transpose(Application.Transpose(Ar))
  4.             Ar = Application.Transpose(Ar) '第一次轉置  得到的是 整欄資料
  5.             Ar = Application.Transpose(Ar) '第二次轉置 得到的是  整列資料   
複製代碼

TOP

回復 19# dafa
  1. Private Sub UserForm_Initialize()
  2.      With ListBox1
  3.         .MultiSelect = fmMultiSelectMulti   '=> 1  :  ListBox1屬性設定可複選
  4.        ' fmMultiSelectSingle 0 只能選取一個專案 ( 預設 )。
  5.        ' fmMultiSelectSimple 1 按下空白鍵或按下滑鼠鍵,可以選取、取消選取清單中的專案。
  6.        '  fmMultiSelectExtended 2 按下 SHIFT 並按下滑鼠鍵,或按下 SHIFT 並按下一個方向鍵,可選取一個範圍內的所有專案。按下 CTRL 並按下滑鼠鍵,可選取或取消選取一個專案。

  7.         .Visible = False
  8.         .ColumnCount = 4                '指定下拉式清單方塊或清單方塊的顯示行數。
  9.         .ColumnWidths = "370,40,40,40"  '指定多行下拉式清單方塊或清單方塊中的各行寬度。
  10.     End With
  11. End Sub
  12. Private Sub ListBox1_Change()
  13.     Dim xlString  As String, AA(), xi As Integer
  14.     With ListBox1
  15.         For xi = 0 To .ListCount - 1
  16.             If .Selected(xi) = True Then
  17.                 AA = Application.Index(ListBox1.List, ListBox1.ListIndex + 1)  '陣列中抽出指定的元素陣列(這裡是一維陣列)
  18.                 xlString = IIf(xlString = "", "[" & Join(AA, "] ; [") & "]", xlString & Chr(10) & "[" & Join(AA, "] ; [") & "]")
  19.             End If
  20.         Next
  21.     End With
  22.     Label2.Caption = xlString
  23. End Sub
複製代碼

TOP

回復 25# dafa
抱歉了
  1. Private Sub ListBox1_Change()
  2.     Dim xlString  As String, AA(), xi As Integer
  3.     With ListBox1
  4.         For xi = 0 To .ListCount - 1
  5.             If .Selected(xi) = True Then
  6.                 AA = Application.Index(ListBox1.List, xi + 1)   '***這裡沒修改    陣列中抽出指定的元素陣列(這裡是一維陣列)
  7.                 xlString = IIf(xlString = "", "[" & Join(AA, "] ; [") & "]", xlString & Chr(10) & "[" & Join(AA, "] ; [") & "]")
  8.             End If
  9.         Next
  10.     End With
  11.     Label2.Caption = xlString
  12. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2012-6-3 10:01 編輯

回復 27# dechiuan999
複製 test 工作表 會有答案的
設訂 mSht1=複製的工作表  可正常運作   

For Each E In mSht1.Range("a1", mSht1.Range("a1:d900")).Columns(1).Cells     '測試到 800 的位置是 OK
-> For Each E In  mSht1.Range("a1:d900").Columns(1).Cells

TOP

回復 31# c_c_lai
Option Compare 陳述式必須出現在模組�堙A且必須在任何程序之前。
你的程式碼在那裡 那裡的程序如果有 Option Compare  的設定為主

TOP

        靜思自在 : 道德是提昇自我的明燈,不該是呵斥別人的鞭子。
返回列表 上一主題