Error en macro con tabla dinamica

Ok te explico el problema hice una macro donde se genera una tabla dinamica en el lugar de pagina de la tabla dinamica utilizo una variable que la da el usuario por medio de un inputbox le solicita el dato pero como la variable es numerica puede que el usuario meta en la variable un dato que no exista en la base de donde se genera la tabladinamica entonces marca este error
"no se puede asignar la propiedad _default de la clase pivotitem"
Ya la variable no existe en la base de donde se genera la tabla dinamica
se puede hacer con un if o con otra cosa que cuando marque ese error regrese al principio o termine la macro?

1 respuesta

Respuesta
1
Has Esto
Sub MyMacro ()
On Error GoTo ErrHandler
Aqui inicia el procedimiento que tu tienes.
Precedimiento
Aqui termina el Procedimiento que tu tienes
Exit Sub
Errhandler:
MsgBox ("Ha Ocurrido Un Error En La Ejecucion de la Macro y ha Finalizado")
End Sub
Suerte
pues no fuciono o no se endonde pegar ese codigo pero mejor te doy mi codigo para ver si me puedes decir exactamente donde pegar ese codigo gracias
Sub Por_TIENDA()
' VARIABLES
Dim t As Integer
Dim col As Integer
Dim reng As Integer
Dim Codigo As String
' ACTUALIZACION DE REGISTROS
Sheets("Base").Select
col = 1 ' Columna donde quieres contar los renglones
lastrow = Cells(65536, col).End(xlUp).Row
On Error Resume Next ' Si no hay vacias continua
t = Range(Cells(1, col), Cells(lastrow, col)).SpecialCells(xlCellTypeBlanks).Cells.Count
'nohay:
On Error GoTo 0 'ahora si hay error detente
reng = lastrow - t 'Restas el ultimo renglon menos los vacios
'Reng tiene cuantos renglones no vacios en la columna "col"
MsgBox "# de Filas " & (reng - 1)
'PEGA EL FORMATO
Range("O1").Select
ActiveCell.FormulaR1C1 = "Formato"
Range("O2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-10],Cat_Suc!C[-14]:C[-11],4,0)"
Selection.AutoFill Destination:=Range("o2: o" & reng)
Columns("E:E").Select
Selection.TextToColumns Destination:=Range("E1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 2), TrailingMinusNumbers:=True
Codigo = InputBox("Introduzca el No de Tienda")
Sheets("Tabla").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("Base").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Base!R1C1:R" & reng & "C15").CreatePivotTable TableDestination:= _
"'[Herramienta de Ventas Graficas.xls]Tabla'!R1C1", TableName:="Tabla dinámica1" _
, DefaultVersion:=xlPivotTableVersion10
Sheets("Tabla").Select
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("fecha")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Desc_suc")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tabla dinámica1").AddDataField ActiveSheet.PivotTables _
("Tabla dinámica1").PivotFields("Venta Total (Unidades)"), _
"Suma de Venta Total (Unidades)", xlSum
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Sucursal")
.Orientation = xlPageField
.Position = 1
End With
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Sucursal").CurrentPage _
= Codigo '(aqui es donde me marca el error "no se puede asignar la propiedad _default de la clase pivotitem."
Range("A4").Select
Charts.Add
ActiveChart.SetSourceData Source:=Sheets("Tabla").Range("A4")
ActiveChart.Location Where:=xlLocationAsNewSheet
ActiveChart.PlotArea.Select
ActiveChart.ChartType = xlLineMarkers
'FORMATO DE TABLA DINAMICA
ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _
HasLeaderLines:=False, ShowSeriesName:=False, ShowCategoryName:=False, _
ShowValue:=True, ShowPercentage:=False, ShowBubbleSize:=False
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.ColorIndex = 57
.Weight = xlMedium
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlAutomatic
.Smooth = True
.MarkerSize = 7
.Shadow = False
End With
With ActiveChart.ChartGroups(1)
.HasDropLines = False
.HasHiLoLines = False
.HasUpDownBars = False
.VaryByCategories = False
End With
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlNone, _
Type:=xlFixedValue, Amount:=0.5
ActiveChart.SeriesCollection(1).ApplyDataLabels AutoText:=True, LegendKey:= _
False, ShowSeriesName:=False, ShowCategoryName:=False, ShowValue:=True, _
ShowPercentage:=False, ShowBubbleSize:=False
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.FontStyle = "Negrita"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Position = xlLabelPositionAbove
.Orientation = xlHorizontal
End With
ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 2
.Weight = xlThin
.LineStyle = xlContinuous
End With
With Selection.Interior
.ColorIndex = 2
.PatternColorIndex = 1
.Pattern = xlSolid
End With
End Sub
Sub Por_TIENDA()
On Error GoTo ErrHandler   ' LINEA INCLUIDA
' VARIABLES
Dim t As Integer
Dim col As Integer
Dim reng As Integer
Dim Codigo As String
' ACTUALIZACION DE REGISTROS
Sheets("Base").Select
col = 1 ' Columna donde quieres contar los renglones
lastrow = Cells(65536, col).End(xlUp).Row
On Error Resume Next ' Si no hay vacias continua
t = Range(Cells(1, col), Cells(lastrow, col)). SpecialCells(xlCellTypeBlanks). Cells. Count
'nohay:
On Error GoTo 0 'ahora si hay error detente
reng = lastrow - t 'Restas el ultimo renglon menos los vacios
'Reng tiene cuantos renglones no vacios en la columna "col"
MsgBox "# de Filas " & (reng - 1)
'PEGA EL FORMATO
Range("O1").Select
ActiveCell.FormulaR1C1 = "Formato"
Range("O2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-10],Cat_Suc!C[-14]:C[-11],4,0)"
Selection.AutoFill Destination:=Range("o2: o" & reng)
Columns("E:E").Select
Selection.TextToColumns Destination:=Range("E1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 2), TrailingMinusNumbers:=True
Codigo = InputBox("Introduzca el No de Tienda")
Sheets("Tabla").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("Base").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Base!R1C1:R" & reng & "C15").CreatePivotTable TableDestination:= _
"'[Herramienta de Ventas Graficas.xls]Tabla'!R1C1", TableName:="Tabla dinámica1" _
, DefaultVersion:=xlPivotTableVersion10
Sheets("Tabla").Select
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("fecha")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Desc_suc")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tabla dinámica1").AddDataField ActiveSheet.PivotTables _
("Tabla dinámica1").PivotFields("Venta Total (Unidades)"), _
"Suma de Venta Total (Unidades)", xlSum
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Sucursal")
.Orientation = xlPageField
.Position = 1
End With
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Sucursal").CurrentPage _
= Codigo '(aqui es donde me marca el error "no se puede asignar la propiedad _default de la clase pivotitem."
Range("A4").Select
Charts.Add
ActiveChart.SetSourceData Source:=Sheets("Tabla").Range("A4")
ActiveChart.Location Where:=xlLocationAsNewSheet
ActiveChart.PlotArea.Select
ActiveChart.ChartType = xlLineMarkers
'FORMATO DE TABLA DINAMICA
ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _
HasLeaderLines:=False, ShowSeriesName:=False, ShowCategoryName:=False, _
ShowValue:=True, ShowPercentage:=False, ShowBubbleSize:=False
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.ColorIndex = 57
.Weight = xlMedium
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlAutomatic
.Smooth = True
.MarkerSize = 7
.Shadow = False
End With
With ActiveChart.ChartGroups(1)
.HasDropLines = False
.HasHiLoLines = False
.HasUpDownBars = False
.VaryByCategories = False
End With
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlNone, _
Type:=xlFixedValue, Amount:=0.5
ActiveChart.SeriesCollection(1).ApplyDataLabels AutoText:=True, LegendKey:= _
False, ShowSeriesName:=False, ShowCategoryName:=False, ShowValue:=True, _
ShowPercentage:=False, ShowBubbleSize:=False
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.FontStyle = "Negrita"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Position = xlLabelPositionAbove
.Orientation = xlHorizontal
End With
ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 2
.Weight = xlThin
.LineStyle = xlContinuous
End With
With Selection.Interior
.ColorIndex = 2
.PatternColorIndex = 1
.Pattern = xlSolid
End With
Exit Sub ' LINEA INCLUIDA
ErrHandler   'LINEA INCLUIDA
MsgBox(" Ha ocurrido un Erroren la ejecucion de su macro, y esta ha finalizado")   
End Sub
ijoles no mas no funcion no se si la macro no respete el On Error GoTo por se error 1004 de tiempo de ejecucion
gracias
Lo he probado con codigos propios y esta funcionando..
Si quieres mandame copia de tu archovo para analizarlo haber si lo podemos adaptar
[email protected]
Estima do experto muchas gracias por tu respuesta estubo muy bien y me sirvio de mucho eso lo que dijiste era correcto solo lo tube que acondicionar a mi macro y esta perfecto ya funcion mychas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas