エクセルVBA。ピボットテーブルのフィルタ設定の「Visible」が、人によってシートの非表示のアクションを起こします。
エクセルVBA。ピボットテーブルのフィルタ設定の「Visible」が、人によってシートの非表示のアクションを起こします。 '★ここです↓ の箇所の「itm.Visible = False」ですが、 (「Dim itm As PivotItem」で)ピボットテーブルに対する指示だという定義をしたつもりなのですが、社内で同じOffice365のエクセルでマクロを実行しても、うまくピボットテーブルのフィルター設定ができる人と、★ここですの箇所でエラーとなり、シート"OR_PV"が非表示になってしまう人がいます。なぜでしょうか。 Sub OR_PVrefresh() Dim rc As Integer Dim pvrefresh As Boolean Dim pvt As PivotTable Dim itm As PivotItem Set pvt = ThisWorkbook.Sheets("OR_PV").PivotTables("OR_pivot") Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False pvt.ManualUpdate = True Sheets("OR_PV").Visible = xlSheetHidden pvrefresh = Sheets("OR_PV").PivotTables("OR_pivot").RefreshTable For Each itm In Sheets("OR_PV").PivotTables("OR_pivot").PivotFields("NSR").PivotItems Select Case itm.Value Case "BULK", "%Line" itm.Visible = True Case Else '★ここです↓ itm.Visible = False End Select Next itm For Each itm In Sheets("OR_PV").PivotTables("OR_pivot").PivotFields("PO").PivotItems If itm.Value Like "*EC" Then Then itm.Visible = False Else itm.Visible = True End If Next itm Application.Calculation = xlCalculationAutomatic Application.Calculate Application.EnableEvents = False pvt.ManualUpdate = False Sheets("OR_PV").Visible = xlSheetVisible Application.ScreenUpdating = True pvrefresh = Sheets("OR_PV").PivotTables("OR_pivot").RefreshTable If pvrefresh = True Then rc = MsgBox("オーダーレポートを読み込みピボットテーブルを更新しました(PO *ECを含まない、BULKと%LINEでフィルターしています)。続けてOR_PV(2)(Waitinと*INVT*も含む版を更新しますか?", vbYesNo) If rc = vbYes Then Call OR_PV_2refresh Else MsgBox "処理をキャンセルします" End If End If End Sub
Excel | Visual Basic・110閲覧・100
ベストアンサー
>うまくピボットテーブルのフィルター設定ができる人と、 >★ここですの箇所でエラーとなり、シート"OR_PV"が非表示になってしまう人がいます。 これは単純に エラーが起きないヒトは Sheets("OR_PV").Visible = xlSheetVisible が実行されるけど、 エラーが起きるヒトは Sheets("OR_PV").Visible = xlSheetHidden が実行されたあとエラーが起きて止まってしまい Sheets("OR_PV").Visible = xlSheetVisible までたどり着けず非表示のままになるから エラーが起きたときにitmとかitm.Visibleに何が入ってるか調べてみては? あとはエラーの文章でググると同じ目に遭った人が解決法をブログに書いてたりします
ありがとうございます! ここで質問する前にもちろん検索したつもりなのですが、ヒントをいただいたものと思わしきブログを発見しました。 確かにエラーになる同僚だけ、このマクロの処理がやけに時間がかかっていました。 月曜に、同僚に試してもらい、エラーが出た箇所を確認してみます。 土日挟みますが、何とかなる気がして来ました。まずはご返信申し上げます。
質問者からのお礼コメント
ありがとうございます。解消は出来ていないのですが、原因がわかり糸口はみつかりました!
お礼日時:6/29 13:26