返回列表 上一主題 發帖

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

再另外
把 EXCEL表單處理介面 裡面的這段 加入藍字部分

Private Sub CommandButton1_Click()
    If Application.FindFile = False Then
        MsgBox "您沒有開啟母檔"
    End If
Dim lRrow&
    lRrow = 3
vD.RemoveAll
While Cells(lRow, 5) <> ""
      If Not vD.Exists(CStr(Cells(lRow, 5))) Then
        EXCEL表單處理介面.ListBox1.AddItem CStr(Cells(lRow, 5))
        vD(CStr(Cells(lRow, 5))) = lRow
      End If
      lRow = lRow + 1
End With
End Sub

TOP

回復 50# c_c_lai

我真的...不知道要怎麼感謝兩位的大恩大德
乾脆請吃飯好了!!

但是重點....
我....
又錯誤了 這次是全新的錯誤1004
出現在我輸紐分析的內部
之前分析都沒有問題 怎麼現在前面問題解決之後會跑出這個呢?
如圖


上天真的給我好多的考驗阿....

TOP

回復 52# chaoyiho
這是你並無任何選項,接著直接點選 "執行分析" 所產生的,
是麼?

TOP

本帖最後由 jackyq 於 2016-4-28 10:26 編輯

回復 52# chaoyiho


#51 樓 我看錯了  ( While  看成 With )
更正一下
大大真的是來考大家眼力的 ( 找不同的遊戲 ?? )

Private Sub CommandButton1_Click()
    If Application.FindFile = False Then
        MsgBox "您沒有開啟母檔"
    End If
Dim lrow&   ' c_c_lai 大大找出
    lrow = 3
vD.RemoveAll
While Cells(lrow, 5) <> ""
      If Not vD.Exists(CStr(Cells(lrow, 5))) Then
        EXCEL表單處理介面.ListBox1.AddItem CStr(Cells(lrow, 5))
        vD(CStr(Cells(lrow, 5))) = lrow
      End If
      lrow = lrow + 1
Wend
End Sub

TOP

回復 52# chaoyiho
這是你並無任何選項,接著直接點選 "執行分析" 所產生的,
是麼?
我已 E-Mail 傳 表單處理系統3.2等待修改.xlsm, 以及原先的
檔案.rar 了,你執行看看。

TOP

回復 52# chaoyiho
表單處理系統3.2等待修改.rar (633.3 KB)
這隻是你應用 luhpro 大大的處理模式:
檔案.rar (305.26 KB)

TOP

回復 54# jackyq

我發現我常常會這樣
請問前輩 關於這樣的問題 有什麼習慣或動作可以預防或養成嗎?

而且您會發現
我的程式碼內容都塞在USERFORM中
很多重複的贅句>>似乎有方式可以合併成一個一起宣告(Public?)

請教這該怎麼處理呢?

TOP

回復 55# c_c_lai

前輩您的檔案我已經測試過了 的確可以用!
經過我一行一行的比對語法後
我發現我的錯字漏字還真的很多...

前輩的處理方式是這個邏輯
1.開啟舊檔
2.篩選船舶
3.按下分析
4.結果

但是關於2.與3.
不知道有沒有可以重複動作的方式呢?
因為這樣子的方式似乎是一次性的
分析過後就無法再做篩選 必須要重新再一次才有辦法處理了(?)
或是我又做錯了呢?
請前輩賜教!

TOP

回復  c_c_lai

前輩您的檔案我已經測試過了 的確可以用!
經過我一行一行的比對語法後
我發現我的錯字 ...
chaoyiho 發表於 2016-4-28 11:19

其實這非你之問題,ActiveWorkbook.PivotCaches 在做過一次之後,
似乎無法再次處理,就算是把所有工作表單刪除只剩下 "FORM_REPORT"
一樣會出現

執行階段錯誤 '5'
程序呼叫或引數不正確

說真格的,我並不孰悉 Excel 的 PivotTable 處哩,你可能要請教
版上的各位大大了。

TOP

本帖最後由 c_c_lai 於 2016-4-29 17:14 編輯

回復 58# chaoyiho
針對 #58
不知道有沒有可以重複動作的方式呢?
因為這樣子的方式似乎是一次性的
分析過後就無法再做篩選 必須要重新再一次才有辦法處理了(?)
------------------------------------------------------------------------
為解決僅能執行一次的困擾問題,修正成能夠重複「可多次執行」,即
『執行分析』之「樞紐分析表」,修改內容如下 (僅列示出修改部分):
一、
  1. Private Sub CommandButton3_Click()
  2.     If TestBookOpen("FORM_REPORT.xlsx") = "" Then MsgBox "檔案未開啟": Exit Sub '跳出程序

  3.     刪除分析結果表                '  增加刪除分析工作表單,以便再次『執行分析』

  4.     Range("A1:M50192").Select
  5.     Range("A2").Activate
  6.     Sheets.Add
  7.     '  ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
  8.         "FORM_REPORT!R2C1:R50192C13", Version:=xlPivotTableVersion14). _
  9.         CreatePivotTable TableDestination:="工作表1!R3C1", TableName:="樞紐分析表1", _
  10.         DefaultVersion:=xlPivotTableVersion14
  11.     '  2016/04/29  修正僅能執行一次的困擾問題
  12.     '  原本『執行分析』之「樞紐分析表」僅能執行一次,為解決此一困擾問題,故將 TableDestination
  13.     '  傳入值 "工作表1!R3C1" 予以修正為 ActiveSheet.Name & "!R3C1",如此便可多次執行了。
  14.     ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
  15.         "FORM_REPORT!R2C1:R50192C13", Version:=xlPivotTableVersion14). _
  16.         CreatePivotTable TableDestination:=ActiveSheet.Name & "!R3C1", TableName:="樞紐分析表1", _
  17.         DefaultVersion:=xlPivotTableVersion14
  18.     '  Sheets("工作表1").Select          '  原為「工作表1」,但執行第二次時為「工作表10」, 則會產生錯誤訊息
  19.     Sheets(ActiveSheet.Name).Select      '  為配合「可多次執行」,將表單名稱改以動態隨機處理 (2016/04/29)
  20.     Cells(3, 1).Select
複製代碼
二、
  1.     '  2016/04/26  增加與 "EXCEL表單處理介面.ListBox" 的連結。
  2.     '  所有增列之 Sav、J.C.W、P.C.O、Pmax、Stuffing Box、F.O.、
  3.     '  Exh、Exh 工作表單 VSL 均與 「總表」對應之 VSL 同步;
  4.     '  則將 "以下 With ~ End With" 新增的「程式碼」內容移至此處。
  5.     Dim cts As Integer
  6.    
  7.     With ActiveSheet.PivotTables("樞紐分析表1").PivotFields(" VSL")
  8.         For cts = 0 To EXCEL表單處理介面.ListBox1.ListCount - 1
  9.             '  .PivotItems(EXCEL表單處理介面.ListBox1.List(cts)).Visible = IIf(EXCEL表單處理介面.ListBox1.Selected(cts), True, False)
  10.             '  更簡潔、扼要的 Assignment 的表示式。
  11.             .PivotItems(EXCEL表單處理介面.ListBox1.List(cts)).Visible = EXCEL表單處理介面.ListBox1.Selected(cts)
  12.         Next cts
  13.     End With

  14.     '  為配合「可多次執行」,予以修正改以動態對應新產生表單名稱,以免產生錯誤  (2016/04/29)
  15.     '  Sheets("工作表1").Select
  16.     Sheets(ActiveSheet.Name).Select
  17.     '  Sheets("工作表1").Name = "Liner"
  18.     Sheets(ActiveSheet.Name).Name = "Liner"
  19.     '  Sheets("工作表1").Copy Before:=Sheets(1)
  20.     Sheets(ActiveSheet.Name).Copy Before:=Sheets(1)
  21.     '  Sheets("工作表1 (2)").Select
  22.     Sheets(ActiveSheet.Name).Select
  23.     '  Sheets("工作表1 (2)").Name = "Exh"
  24.     Sheets(ActiveSheet.Name).Name = "Exh"
  25.     '  Sheets("工作表1 (2)").Copy Before:=Sheets(1)
  26.     Sheets(ActiveSheet.Name).Copy Before:=Sheets(1)
  27.     '  Sheets("工作表1 (3)").Select
  28.     Sheets(ActiveSheet.Name).Select
  29.     '  Sheets("工作表1 (3)").Name = "F.O Inlet"
  30.     Sheets(ActiveSheet.Name).Name = "F.O Inlet"
  31.     '  Sheets("工作表1 (3)").Copy Before:=Sheets(1)
  32.     Sheets(ActiveSheet.Name).Copy Before:=Sheets(1)
  33.     '  Sheets("工作表1 (4)").Select
  34.     Sheets(ActiveSheet.Name).Select
  35.     '  Sheets("工作表1 (4)").Name = "Stuffing Box"
  36.     Sheets(ActiveSheet.Name).Name = "Stuffing Box"
  37.     '  Sheets("工作表1 (4)").Copy Before:=Sheets(1)
  38.     Sheets(ActiveSheet.Name).Copy Before:=Sheets(1)
  39.     '  Sheets("工作表1 (5)").Select
  40.     Sheets(ActiveSheet.Name).Select
  41.     '  Sheets("工作表1 (5)").Name = "Pmax"
  42.     Sheets(ActiveSheet.Name).Name = "Pmax"
複製代碼

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題