作者homelife (SKY)
看板Office
標題[問題] VBA 樞紐分析表在迴圈中的問題
時間Wed Feb 27 02:45:37 2019
軟體: Office 365 Excel
目前寫了一個巨集,流程大約如下:
我有八個事先寫好規則的工作表,與一個來源資料工作表,
巨集會根據八個含規則工作表內容對來源資料進行八次樞紐(樞紐包在迴圈內)
每次樞紐完會把樞紐工作表內的資料全部複製到新的結果工作表,並且把樞紐工作表刪除
(因為樞紐工作表只是用來計算)
我的想法是用這個方式一次產出八個最終的結果工作表
目前的進度是功能都已經寫完,也可以順利對來源資料表進行一次處理,也就是說
不用迴圈都沒問題,但是如果我用迴圈把整個流程包起來就會在樞紐的步驟卡住。
(把迴圈拿掉的話,手動跑八次不同規則的巨集不會有錯誤,但是放迴圈的話跑到第二輪
就會在樞紐處停住)
附上產生樞紐部分的程式:
'會在下面Set PTCachc這行卡住
Set PTCache = ThisWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, _
SourceData:=Datasheet.Range(Cells(1, 1), Cells(workingRow,
workingColumn)))
Set PT = PTCache.CreatePivotTable _
(TableDestination:="", _
TableName:=ReportType)
--
錯誤訊息是:
執行階段錯誤'1004':
'Range'方法(_Worksheet'物件)失敗
錯誤訊息看起來不太像是樞紐的問題,但是程式都是停在上面貼的樞紐部分。
雖然我在每一次樞紐完都會把樞紐工作表刪除,不知道是否會是實際上樞紐資料其實
還存在背景裡,導致第二輪要使用樞紐時發生錯誤?
我因為這個猜想所以嘗試過使用PT.ClearTable將樞紐清空,但程式還是一樣停住。
因為巨集有點龐大,所以難以把整個貼上來,或許問題也不好找,真是不好意思,
各位先進如果覺得可能要往哪個方向查都請不吝賜教,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.35.227
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1551206739.A.229.html
※ 編輯: homelife (59.115.35.227), 02/27/2019 02:50:55
※ 編輯: homelife (59.115.35.227), 02/27/2019 04:12:12
1F:→ soyoso: sourcedata部分改為range(datasheet.cells(1,1),datasheet 02/27 06:54
2F:→ soyoso: .cells(workingrow,workingcolumn)) 02/27 06:55
3F:→ soyoso: 或是set ptcache上方datasheet工作表select或activate 02/27 07:20
4F:→ soyoso: 這樣sourcedata內就可省略datasheet. 02/27 07:21
您好,使用您一、二行推文的程式碼成功了!
請問原本的寫法是哪裡有問題呢,為什麼會造成第二次執行就停住?
謝謝~
※ 編輯: homelife (59.115.35.227), 02/27/2019 17:59:39
5F:→ soyoso: 原本的範圍寫法cells的部分指定的是作用工作表內的儲存格 02/27 18:34
6F:→ soyoso: ,而非datasheet內的儲存格 02/27 18:34
謝謝,上了一課~我也許需要再做一些練習才能完全理解
※ 編輯: homelife (59.115.46.162), 02/28/2019 14:28:30