Tại sao máy cắt của tôi không hoạt động trong excel

Xin chào tất cả,

Tôi có một sổ làm việc có một trang tính dữ liệu và hai trang tính, mỗi trang tính có một bảng tổng hợp khác nhau trên đó.

Các bảng tổng hợp được tạo bằng mã vba và sau khi cố gắng ban đầu để bảng tổng hợp thứ 2 xuất hiện, điều này hiện đang hoạt động. Tuy nhiên, tôi muốn có các bộ cắt được gắn vào các trục này [mỗi bộ chỉ ảnh hưởng đến một bảng duy nhất] và trong khi mã tôi có vẻ đúng thì excel sẽ chỉ tạo một bộ bộ cắt chứ không phải bộ khác. Ban đầu nó chỉ tạo bộ slicer đầu tiên chứ không phải bộ thứ 2 nhưng bây giờ bằng cách nào đó nó đang tạo bộ thứ 2 chứ không phải bộ thứ nhất.

Diễn đàn không cho phép tôi sao chép toàn bộ mã của cả hai bộ trục/bộ phân lớp vào bài đăng này nên tôi đã đính kèm một bản sao của sổ làm việc. Mã nằm trong các mô-đun Sub_Make_1st_Pivot và Sub_Make_2nd_Pivot. Tôi cũng đã sao chép mã cho bộ trục/bộ cắt đầu tiên bên dưới. Bộ thứ 2 về cơ bản là cùng một mã nhưng với PivotTableName đã thay đổi và PSheet đã thay đổi thành Sheet3.

Tôi đánh giá cao việc bạn đã dành thời gian xem xét nội dung này và nhận bất kỳ trợ giúp/hướng dẫn nào mà bạn có thể có.

Cảm ơn rất nhiều,
Chris

Bộ xoay/Bộ cắt lát thứ nhất.

Mã.

Sub MakePivot1[]

' |-------- PIVOT TABLE 1 START --------|
ProgressForm "Reporting"

Dim PSheet As Worksheet, DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim LastSourceRow As Long, LastSourceCol As Long

On Error Resume Next
Set PSheet = Worksheets["Summary"]
PSheet.Activate
Set DSheet = Worksheets["Data"]
PivotTableName = "PivotTable1"
LastSourceRow = DSheet.Cells[Rows.Count, 1].End[xlUp].Row
LastSourceCol = DSheet.Cells[1, Columns.Count].End[xlToLeft].Column
Set PRange = DSheet.Cells[1, 1].Resize[LastSourceRow, LastSourceCol]
Set PCache = ActiveWorkbook.PivotCaches.Create[SourceType:=xlDatabase, SourceData:=PRange]
Set PTable = PCache.CreatePivotTable[TableDestination:=PSheet.Cells[3, 7], TableName:=PivotTableName]

ProgressForm "None", "Creating pivot table [" & PivotTableName & "]"

With PSheet
With .PivotTables[PivotTableName].PivotFields["Employee Name"]
.Orientation = xlRowField
.Position = 1
.LayoutBlankLine = True
.Function = xlNone
End With
With .PivotTables[PivotTableName].PivotFields["Blank For Spacing"]
.Orientation = xlRowField
.Position = 2
.LayoutBlankLine = True
.Function = xlNone
End With
With .PivotTables[PivotTableName].PivotFields["Charge Code [Full]"]
.Orientation = xlRowField
.Position = 3
.LayoutBlankLine = True
.Function = xlNone
End With
With .PivotTables[PivotTableName].PivotFields["Panel No. [Full]"]
.Orientation = xlRowField
.Position = 4
.LayoutBlankLine = True
.Function = xlNone
End With
With .PivotTables[PivotTableName].PivotFields["Total Time"]
.Orientation = xlDataField
.Position = 1
.LayoutBlankLine = True
.Function = xlSum
.NumberFormat = "[h]:mm:ss"
.Name = "Sum of Total Time"
End With

.PivotTables[PivotTableName].ShowTableStyleRowStripes = False ' Turn off alternating colour rows
.PivotTables[PivotTableName].TableStyle2 = "NewPivotStyle" ' Set colour to custom style
.PivotTables[PivotTableName].SubtotalLocation xlAtBottom ' Set subtotals to appear at bottom of groups
.PivotTables[PivotTableName].PivotFields["Blank For Spacing"].Subtotals = Array[False, False, False, False, False, False, False, False, False, False, False, False]
.PivotTables[PivotTableName].PivotFields["Charge Code [Full]"].Subtotals = Array[False, False, False, False, False, False, False, False, False, False, False, False]
.PivotTables[PivotTableName].PivotFields["Panel No. [Full]"].Subtotals = Array[False, False, False, False, False, False, False, False, False, False, False, False]
.PivotTables[PivotTableName].ShowDrillIndicators = False ' Turn off +/- buttons
.PivotTables[PivotTableName].DisplayFieldCaptions = False ' Turn off headers
.PivotTables[PivotTableName].HasAutoFormat = False ' Stop pivot from resizing on update
.Columns["G"].ColumnWidth = 39.71
End With
' |-------- PIVOT TABLE 1 END --------|
End Sub

 

Hmm, tôi đã xem mã của bạn nhưng không thể kiểm tra mã đó trên máy của tôi, vì không có dữ liệu để xử lý [cũng phải chuyển đổi lệnh gọi API để hoạt động trên bản cài đặt 64 bit].

Dù sao đi nữa, không có mã nào để thêm bộ cắt vào Bảng tổng hợp thứ nhất trong mẫu của bạn.

Có thể có một số lý do khiến chỉ 1 xuất hiện.

1. Tên Slicer không khác biệt
2. SlicerCache được chia sẻ


Từ mã của bạn, cả hai trục của bạn đều được tạo bằng cách sử dụng cùng một dữ liệu, do đó, nó thực sự có thể được tạo từ một bộ đệm. Thay vì từ 2 bộ đệm riêng biệt.

Tôi sẽ làm như bên dưới.
Tạo trục xoay đầu tiên của bạn. Sau đó sao chép trục đó sang Sheet3. Điều chỉnh các trường. Bằng cách này, không có bộ đệm dự phòng nào được tạo.

Sau đó, tạo máy cắt lát đầu tiên của bạn. Ngắt kết nối liên kết đến trục thứ 2. Sau đó sao chép máy thái của bạn vào vị trí thứ 2. Kết nối với trục thứ 2 và sau đó ngắt kết nối với trục đầu tiên.
Lặp lại quy trình cho từng máy thái.

CHỈNH SỬA. Ồ một điều nữa. Tôi sẽ xóa "On Error Resume Next" khỏi mã của bạn để gỡ lỗi. Trừ khi bạn biết chính xác lỗi mà đoạn mã đó sẽ gây ra và không còn cách nào khác để xử lý. Bạn không nên sử dụng tuyên bố đó. Thay vào đó, hãy sử dụng bẫy lỗi hoặc một số phương tiện khác để xử lý nó. Nó sẽ làm cho mã gỡ lỗi dễ dàng hơn nhiều.

 

Tại sao slicer hiển thị Excel trống?

Lý do bạn thấy Trống trong slicer là vì Bảng dữ liệu có giá trị "trống" trong [Cột 1] . Nếu bạn mang [Cột 1] từ bảng Dữ liệu trong "Bảng" trực quan, bạn sẽ không thấy khoảng trống. Điều này là do "bảng" sẽ tự động loại bỏ các khoảng trống.

Chủ Đề