返回列表 上一主題 發帖

[發問] 怎麼在USERFORM中加入可篩選複選之樹狀圖

[發問] 怎麼在USERFORM中加入可篩選複選之樹狀圖

各位前輩好~
小弟想問一下關於樹狀圖的問題
如下圖(1)

這是我的表單處理介面
我想要在右方篩選船舶的地方加入樹狀圖,對我輸紐分析後的標籤列做VSL的篩選,並且可以做複選動作
如下圖(2) 為我輸紐過後之檔案,我想在USERFORM內加入篩選樹狀圖如圖(3)最後變成圖(4)的樣子

篩選樹狀圖01.png


請問各位前輩
我應該要如何做呢?
目前公司電腦無法壓縮檔案 故無法上傳檔案提供各位前輩測試 稍後補上:dizzy:

回復 1# chaoyiho

這是我寫的VBA
    表單處理系統3.2(PLS).rar (658.22 KB)

這是測試檔案(請選擇165表單)
FORM_REPORT.rar (277.59 KB)

拜託大家了~~~~!!!!

TOP

回復 2# chaoyiho

===Module===
  1. Public vD

  2. Option Explicit
  3. ...
複製代碼
  1. Private Sub Workbook_Open()
  2.     Set vD = CreateObject("Scripting.Dictionary")
  3.     EXCEL表單處理介面.Show vbModeless
  4. End Sub
複製代碼
  1. Private Sub CommandButton1_Click()
  2.     If Application.FindFile = False Then
  3.         MsgBox "您沒有開啟母檔"
  4.     End If

  5.     Dim lRow&
  6.    
  7.     lRow = 3
  8.     vD.RemoveAll
  9.     While Cells(lRow, 1) <> ""
  10.       If Not vD.Exists(CStr(Cells(lRow, 1))) Then
  11.         EXCEL表單處理介面.ListBox1.AddItem CStr(Cells(lRow, 1))
  12.         vD(CStr(Cells(lRow, 1))) = lRow
  13.       End If
  14.       lRow = lRow + 1
  15.     Wend
  16. End Sub
複製代碼
因為時間上來不及, 這裡只做加到 ListBox 的方法,
你可以參照改成動態新增為你要的 CheckBox 元件.

表單處理系統3.2(PLS)-a.zip (614.78 KB)

TOP

回復 3# luhpro
請問前輩
我按照您的指示去做練習之後
發現
他的vD.RemoveAll常常都會出現錯誤訊息
"需要物件"或是"未定義"
而無法運行
請問這樣子是要怎麼解決呢?
還煩請幫忙!!

TOP

前輩您可能在忙 所以沒有辦法幫我解答..
可是我真的很想知道!
不知道有沒有人可以替我解答呢?

TOP

大大可能 在 module 漏寫   Public vD  ???

TOP

回復 5# chaoyiho

TOP

回復 6# jackyq

前輩好,我有在模組1裡面寫入宣告Public vD

但是一旦執行分析
但是還是出現需要物件
真的不知道怎麼辦 Q_Q

TOP

回復 7# c_c_lai

謝謝前輩提醒,我一直都有加入
但是還是持續出現找不到物件(按下分析之後)
就會跳出錯誤424
到底怎麼會這樣?(崩潰)

TOP

  Public vD  as object
'
    Private Sub CommandButton1_Click()
        If Application.FindFile = False Then
            MsgBox "您沒有開啟母檔"
        End If

        Dim lRow&
      
      if vD is nothing then  Set vD = CreateObject("Scripting.Dictionary")
        lRow = 3
        vD.RemoveAll
        While Cells(lRow, 1) <> ""
          If Not vD.Exists(CStr(Cells(lRow, 1))) Then
            EXCEL表單處理介面.ListBox1.AddItem CStr(Cells(lRow, 1))
            vD(CStr(Cells(lRow, 1))) = lRow
          End If
          lRow = lRow + 1
        Wend
    End Sub

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題