Saltar al contenido

Tabla dinamica con optionbutton


Recommended Posts

publicado

Buenos Dias:

Les presento la siguiente inquietud:

En una macro tengo una tabla dinamica la pregunta es, es posible que cuando contruya mi tabla dinamica me permita escoger los campos que van dentro de ella con unos optionbutton???, si tienen algun ejemplo se los agradezco

publicado
Buenos Dias:

Les presento la siguiente inquietud:

En una macro tengo una tabla dinamica la pregunta es, es posible que cuando contruya mi tabla dinamica me permita escoger los campos que van dentro de ella con unos optionbutton???, si tienen algun ejemplo se los agradezco

Qué tal, sí es factible agregar campos vía código después de que contruya tu tabla, tu eliges que campos agregar y en qué posición de la tabla agregarlos. El siguiente ejemplo crea una tabla pivote a partir de una consulta a una base de datos de access, espero te sirva

Public Sub CreateARPivotTable()

Dim wb As Workbook

Dim ws As Worksheet

Dim pvtTable As PivotTable

Dim pvtField As PivotField

Dim pvtItem As PivotItem

Dim objPvtCache As PivotCache

Dim rsPvt As ADODB.Recordset

'Los siguientes son nombres de campos regresados de la consulta de Access y utilizados

'para construir la tabla pivote

'Customer

'AgeBracket

'AE

'Collector

'BU

'CurrOpen_USD

modDB.OpenDB 'Open database

Sql = "Exec GetAR"

Conn.CommandTimeout = 0

Conn.CursorLocation = adUseClient

Set rsPvt = Conn.Execute(Sql)

If Not rsPvt.EOF Then

Dim xlApp As New Excel.Application

xlApp.Visible = False

Set wb = xlApp.Workbooks.Add

'Set wb = ActiveWorkbook

Set ws = wb.Worksheets.Add

ws.Name = "Pivot table"

'Initiate PivotCache object to accept external data

Set objPvtCache = wb.PivotCaches.Add(SourceType:=xlExternal)

'Assign the recordset 'rs' to PivotCache object

Set objPvtCache.Recordset = rsPvt

'Assign the objPvtCache to pvtTable objectCreate the pivot table

Set pvtTable = objPvtCache.CreatePivotTable(ws.Range("A6"))

'Add Fields

pvtTable.AddFields RowFields:="Customer", ColumnFields:="AgeBracket", PageFields:=Array("AE", "Collector", "BU")

Set pvtField = pvtTable.PivotFields("CurrOpen_USD")

pvtTable.AddDataField pvtField

'Organize

pvtTable.PivotFields("AgeBracket").PivotItems("Current").Position = 1

pvtTable.PivotFields("AgeBracket").PivotItems("30 - 45").Position = 2

pvtTable.PivotFields("AgeBracket").PivotItems("46 - 60").Position = 3

pvtTable.PivotFields("AgeBracket").PivotItems("61 - 90").Position = 4

pvtTable.PivotFields("AgeBracket").PivotItems("91 - 120").Position = 5

pvtTable.PivotFields("AgeBracket").PivotItems("121 - 180").Position = 6

pvtTable.PivotFields("AgeBracket").PivotItems("181 - 365").Position = 7

pvtTable.PivotFields("AgeBracket").PivotItems("+ 365").Position = 8

'Sort

pvtTable.PivotFields("Customer").AutoSort xlDescending, "Sum of CurrOpen_USD"

'Format

pvtTable.PivotFields("Sum of CurrOpen_USD").NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"

'Filters

pvtTable.PivotFields("BU").ClearAllFilters

pvtTable.PivotFields("BU").CurrentPage = "(All)"

pvtTable.PivotFields("Collector").ClearAllFilters

pvtTable.PivotFields("Collector").CurrentPage = "(All)"

pvtTable.PivotFields("AE").ClearAllFilters

pvtTable.PivotFields("AE").CurrentPage = "(All)"

'Hide field list

wb.ShowPivotTableFieldList = False

MsgBox "Pivot report created...", vbInformation + vbOKOnly, "Test"

xlApp.Visible = True

Else

MsgBox "No AR returned", vbInformation + vbOKOnly, "Test"

End If

modDB.CloseDB 'Close database

End Sub

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.