Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Can anyone help me understand why this does not work if there are no
pivots on the current sheet. this code is supposed to either use the pivot the user selected or the 1st pivot on the active sheet and then update the source data. It works perfectly except when a work sheet has no pivots - in that case, it creates an error that I cannot catch. Why does the line On Error GoTo Error_Need_Pivot_Source in the NoPivotSelected: block not find this error? How can I correct it? Any help would be greatly appreciated. thanks Tim Sub Update_Pivot_Table_Sources() ' ' Macro recorded 5/31/2007 by TB ' ' Dim iSheets As Integer, x As Integer Dim iPivot As Integer, _ strCurrentSheet As String, _ strNewPivotTblSrc As String, _ strResponse As String Dim pt As PivotTable strResponse = MsgBox("Do you want to change all of the Pivot Table Sources?", vbOKCancel) If strResponse < vbOK Then MsgBox ("Cancelled") If strResponse = vbOK Then 'see if the user selected a pivot table. if so, assign it to pt and get the source On Error GoTo NoPivotSelected Set pt = ActiveCell.PivotTable CurPivotTblSrc = pt.SourceData GoTo Found_Pivot_Source 'if the user didn't select a pivot, see if there is one on the active sheet. 'If so, use that. If not, return an error and exit NoPivotSelected: On Error GoTo Error_Need_Pivot_Source CurPivotTblSrc = ActiveSheet.PivotTables(1).SourceData GoTo Found_Pivot_Source Found_Pivot_Source: strNewPivotTblSrc = InputBox("Please enter the new source for the pivot table below", "New Pivot Source", CurPivotTblSrc) If strNewPivotTblSrc = "" Then MsgBox ("Cancelled") GoTo Exit_Update_All_Pivots End If strResponse = MsgBox("Do you want to update all pivots (click Yes) or just pivot tables with this data source: " _ & CurPivotTableSrc & " (click no)", vbYesNo) On Error GoTo Error_Found Application.ScreenUpdating = False 'Count number of sheets in workbook iSheets = ActiveWorkbook.Sheets.Count 'remember current sheet strCurrentSheet = ActiveSheet.Name If Windows.Count = 0 Then _ GoTo Exit_Update_All_Pivots For x = 1 To iSheets 'go to a worksheet to change pivot tables Sheets(x).Activate 'turn warning messages off Application.DisplayAlerts = False 'change all pivot tables on 'this worksheet one at a time For Each pt In ActiveSheet.PivotTables If strResponse = vbNo Then If pt.SourceData = CurPivotTblSrc Then pt.SourceData = strNewPivotTblSrc ActiveWorkbook.ShowPivotTableFieldList = False End If Else pt.SourceData = strNewPivotTblSrc ActiveWorkbook.ShowPivotTableFieldList = False End If Next 'turn warning messages on Application.DisplayAlerts = True Next 'return to worksheet that you were originally at Application.ActiveWorkbook.Sheets(strCurrentSheet) .Activate MsgBox ("Pivots updated successfully") End If GoTo Exit_Update_All_Pivots Error_Found: MsgBox ("Error Found. Macro ending. " & Err & ": " & Error(Err)) GoTo Exit_Update_All_Pivots Error_Need_Pivot_Source: MsgBox ("Cannot find pivot table. Please select a sheet with a pivot and re-run macro") GoTo Exit_Update_All_Pivots Exit_Update_All_Pivots: Application.CommandBars("PivotTable").Visible = False Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Error Handling | Excel Programming | |||
VBA: Error handling | Excel Programming | |||
Error Handling - On Error GoTo doesn't trap error successfully | Excel Programming | |||
Error Handling issues | Excel Programming | |||
Error handling with a handling routine | Excel Programming |