Заполните пробелы нулями на вновь созданной таблице Dynami c - PullRequest
0 голосов
/ 16 апреля 2020

Я новичок в использовании VBA. Я только что создал макрос, в котором я хочу, чтобы пробелы автоматически заполнялись нулями в этом же макросе. Я пробовал несколько способов, но это отмечает меня ошибку. Попытался использовать следующую строку кода:

ActiveSheet.PivotTables("TablaDepartamentos").NullString = "0"

Я использую эту строку кода, поскольку сводная таблица переименована:

'Rename pivot table 
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    ws.Activate
For Each pt In ws.PivotTables
    pt.Name = ws.Name

Next pt
Next ws
End With

Далее я оставляю код для просмотра что я делаю. Большое спасибо:

Sub PRUEBA()
Dim pt As PivotTable
Dim PTCache As PivotCache

'Revisa que no existan hojas con ese nombre y si lo hay, lo alimina
On Error Resume Next
Application.DisplayAlerts = False
Sheets("TablaDepartamentos").Delete
On Error GoTo 0

'Obtener la informacion de la tabla
Set PTCache = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=Sheets("ECC-EWM").Range("A1").CurrentRegion.Address)


'Crear una nueva worksheet
Worksheets.Add
ActiveSheet.Name = "TablaDepartamentos"

'Crear la tabla pivote
Set pt = ActiveSheet.PivotTables.Add( _
    PivotCache:=PTCache, _
    TableDestination:=Range("A1"))

'Crear columna de la tabla
 With pt.PivotFields("System")
    .Orientation = xlColumnField
    .Position = 1
End With

'Crear fila de la tabla
With pt.PivotFields("Depart")
 .Orientation = xlRowField
 .Position = 1
End With

'Table information
With pt.PivotFields("Count")
 .Orientation = xlDataField
 .Position = 1
 .Function = xlSum
 .NumberFormat = "#,##0"

'Rename pivot table 
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    ws.Activate
For Each pt In ws.PivotTables
    pt.Name = ws.Name

Next pt
Next ws
End With
End Sub

Большое спасибо

1 Ответ

0 голосов
/ 16 апреля 2020

Трудно помочь, не зная сообщений об ошибках, которые вы получаете.

Я также довольно новичок в VBA, но кто-то дал мне эту ссылку о квалификационных ссылках , и это был очень полезен в изучении хороших методов кодирования. Из первого прочтения вашего сабвуфера я вижу, как вы вызываете ярлык, но затем у вас нет ярлыка для его перехода. Еще одна вещь, которую я вижу сейчас, которая может доставить вам неприятности, - это TableDestination: = Range ("A1")). Вы должны вызвать рабочий лист перед функцией диапазона, чтобы она знала полную ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...