Error pivot table ที่ vb แบบนี้เกิดจากอะไร จะแก้ไขอย่างไร
Posted: Sat Feb 23, 2013 3:20 pm
สวัสดีครับ
ผมได้ทำ workbook ที่เชื่อมต่อ กับ ไฟล์งานอื่น แล้วใช้ conncetion ดึงตารางมาแสดง และใช้โค้ดที่ filter จากเซลล์ใดเซล์หนึ่งแล้วให้มันไปขยับ Pivot table ที่อยู่ในชี้ตเดียวกัน แต่ผมทำได้แล้ว แต่มีปัญหาตอนที่เปิดไฟล์เท่านั้น คือตอนเปิดไฟล์มันขึ้น error ดังไฟล์แนบ แต่ไฟล์ใช้งานได้ตามปกติครับ ผมอยากทราบว่า
1 จะเปลี่ยนโค้ดอย่างไรดี
2 ไม่อยากให้ POP UP ของ VB นี้แสดงได้ไหมครับ ต้องปรับตรงใหนครับ
ผมได้ทำ workbook ที่เชื่อมต่อ กับ ไฟล์งานอื่น แล้วใช้ conncetion ดึงตารางมาแสดง และใช้โค้ดที่ filter จากเซลล์ใดเซล์หนึ่งแล้วให้มันไปขยับ Pivot table ที่อยู่ในชี้ตเดียวกัน แต่ผมทำได้แล้ว แต่มีปัญหาตอนที่เปิดไฟล์เท่านั้น คือตอนเปิดไฟล์มันขึ้น error ดังไฟล์แนบ แต่ไฟล์ใช้งานได้ตามปกติครับ ผมอยากทราบว่า
1 จะเปลี่ยนโค้ดอย่างไรดี
2 ไม่อยากให้ POP UP ของ VB นี้แสดงได้ไหมครับ ต้องปรับตรงใหนครับ
Code: Select all
Option Explicit
Const RegionRangeName As String = "RegionFilterRange"
Const PivotTableName As String = "PivotTable3"
Const PivotFieldName As String = "Doc_Classification"
Public Sub UpdatePivotFieldFromRange(RangeName As String, FieldName As String, _
PivotTableName As String)
Dim rng As Range
Set rng = Application.Range(RangeName)
Dim pt As pivotTable
Dim Sheet As Worksheet
For Each Sheet In Application.ActiveWorkbook.Worksheets
On Error Resume Next
Set pt = Sheet.PivotTables(PivotTableName)
Next
If pt Is Nothing Then GoTo Ex
On Error GoTo Ex
pt.ManualUpdate = True
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim Field As PivotField
Set Field = pt.PivotFields(FieldName)
Field.ClearAllFilters
Field.EnableItemSelection = False
SelectPivotItem Field, rng.Text
pt.RefreshTable
Ex:
pt.ManualUpdate = False
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Public Sub SelectPivotItem(Field As PivotField, ItemName As String)
Dim Item As PivotItem
For Each Item In Field.PivotItems
Item.Visible = (Item.Caption = ItemName)
Next
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Application.Range(RegionRangeName)) _
Is Nothing Then
UpdatePivotFieldFromRange _
RegionRangeName, PivotFieldName, PivotTableName
End If
End Sub