- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
60#
發表於 2016-4-29 17:05
| 只看該作者
本帖最後由 c_c_lai 於 2016-4-29 17:14 編輯
回復 58# chaoyiho
針對 #58
不知道有沒有可以重複動作的方式呢?
因為這樣子的方式似乎是一次性的
分析過後就無法再做篩選 必須要重新再一次才有辦法處理了(?)
------------------------------------------------------------------------
為解決僅能執行一次的困擾問題,修正成能夠重複「可多次執行」,即
『執行分析』之「樞紐分析表」,修改內容如下 (僅列示出修改部分):
一、- Private Sub CommandButton3_Click()
- If TestBookOpen("FORM_REPORT.xlsx") = "" Then MsgBox "檔案未開啟": Exit Sub '跳出程序
- 刪除分析結果表 ' 增加刪除分析工作表單,以便再次『執行分析』
- Range("A1:M50192").Select
- Range("A2").Activate
- Sheets.Add
- ' ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
- "FORM_REPORT!R2C1:R50192C13", Version:=xlPivotTableVersion14). _
- CreatePivotTable TableDestination:="工作表1!R3C1", TableName:="樞紐分析表1", _
- DefaultVersion:=xlPivotTableVersion14
- ' 2016/04/29 修正僅能執行一次的困擾問題
- ' 原本『執行分析』之「樞紐分析表」僅能執行一次,為解決此一困擾問題,故將 TableDestination
- ' 傳入值 "工作表1!R3C1" 予以修正為 ActiveSheet.Name & "!R3C1",如此便可多次執行了。
- ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
- "FORM_REPORT!R2C1:R50192C13", Version:=xlPivotTableVersion14). _
- CreatePivotTable TableDestination:=ActiveSheet.Name & "!R3C1", TableName:="樞紐分析表1", _
- DefaultVersion:=xlPivotTableVersion14
- ' Sheets("工作表1").Select ' 原為「工作表1」,但執行第二次時為「工作表10」, 則會產生錯誤訊息
- Sheets(ActiveSheet.Name).Select ' 為配合「可多次執行」,將表單名稱改以動態隨機處理 (2016/04/29)
- Cells(3, 1).Select
複製代碼 二、- ' 2016/04/26 增加與 "EXCEL表單處理介面.ListBox" 的連結。
- ' 所有增列之 Sav、J.C.W、P.C.O、Pmax、Stuffing Box、F.O.、
- ' Exh、Exh 工作表單 VSL 均與 「總表」對應之 VSL 同步;
- ' 則將 "以下 With ~ End With" 新增的「程式碼」內容移至此處。
- Dim cts As Integer
-
- With ActiveSheet.PivotTables("樞紐分析表1").PivotFields(" VSL")
- For cts = 0 To EXCEL表單處理介面.ListBox1.ListCount - 1
- ' .PivotItems(EXCEL表單處理介面.ListBox1.List(cts)).Visible = IIf(EXCEL表單處理介面.ListBox1.Selected(cts), True, False)
- ' 更簡潔、扼要的 Assignment 的表示式。
- .PivotItems(EXCEL表單處理介面.ListBox1.List(cts)).Visible = EXCEL表單處理介面.ListBox1.Selected(cts)
- Next cts
- End With
- ' 為配合「可多次執行」,予以修正改以動態對應新產生表單名稱,以免產生錯誤 (2016/04/29)
- ' Sheets("工作表1").Select
- Sheets(ActiveSheet.Name).Select
- ' Sheets("工作表1").Name = "Liner"
- Sheets(ActiveSheet.Name).Name = "Liner"
- ' Sheets("工作表1").Copy Before:=Sheets(1)
- Sheets(ActiveSheet.Name).Copy Before:=Sheets(1)
- ' Sheets("工作表1 (2)").Select
- Sheets(ActiveSheet.Name).Select
- ' Sheets("工作表1 (2)").Name = "Exh"
- Sheets(ActiveSheet.Name).Name = "Exh"
- ' Sheets("工作表1 (2)").Copy Before:=Sheets(1)
- Sheets(ActiveSheet.Name).Copy Before:=Sheets(1)
- ' Sheets("工作表1 (3)").Select
- Sheets(ActiveSheet.Name).Select
- ' Sheets("工作表1 (3)").Name = "F.O Inlet"
- Sheets(ActiveSheet.Name).Name = "F.O Inlet"
- ' Sheets("工作表1 (3)").Copy Before:=Sheets(1)
- Sheets(ActiveSheet.Name).Copy Before:=Sheets(1)
- ' Sheets("工作表1 (4)").Select
- Sheets(ActiveSheet.Name).Select
- ' Sheets("工作表1 (4)").Name = "Stuffing Box"
- Sheets(ActiveSheet.Name).Name = "Stuffing Box"
- ' Sheets("工作表1 (4)").Copy Before:=Sheets(1)
- Sheets(ActiveSheet.Name).Copy Before:=Sheets(1)
- ' Sheets("工作表1 (5)").Select
- Sheets(ActiveSheet.Name).Select
- ' Sheets("工作表1 (5)").Name = "Pmax"
- Sheets(ActiveSheet.Name).Name = "Pmax"
複製代碼 |
|