Page 1 of 1

Error pivot table ที่ vb แบบนี้เกิดจากอะไร จะแก้ไขอย่างไร

Posted: Sat Feb 23, 2013 3:20 pm
by godman
สวัสดีครับ
ผมได้ทำ 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




Re: Error pivot table ที่ vb แบบนี้เกิดจากอะไร จะแก้ไขอย่างไ

Posted: Sat Feb 23, 2013 3:35 pm
by snasui
:D Error มันฟ้องชัดอยู่แล้วครับวา Error ตรงไหน ถ้าไม่อยากทราบก็ใช้ On Error Resume Next ไปดักไว้ก่อนบรรทัดที่ Error ครับ ถ้าอยากทราบก็หาต่อว่า RegionRangeName คือเซลล์ใด ช่วงเซลล์ใด มีอยู่จริงหรือไม่

Re: Error pivot table ที่ vb แบบนี้เกิดจากอะไร จะแก้ไขอย่างไ

Posted: Sat Feb 23, 2013 4:18 pm
by godman
ขอบคุณครับ แก้ไขแล้วใช้ได้ตอนเปิดไฟล์ไม่มีปัญหาอะไร แต่พอกด refresh table ที่คอนเนคมา ยังขึ้น error pop up ประโยคเดิมครับ เช่น
คำว่า Runtie eror Intersect of object Golbal fail

Re: Error pivot table ที่ vb แบบนี้เกิดจากอะไร จะแก้ไขอย่างไ

Posted: Sat Feb 23, 2013 4:22 pm
by snasui
snasui wrote:ถ้าอยากทราบก็หาต่อว่า RegionRangeName คือเซลล์ใด ช่วงเซลล์ใด มีอยู่จริงหรือไม่
:aru: ตามนี้เลยครับ

นอกจากนี้การไม่เห็นไฟล์จะเดายากครับ

Re: Error pivot table ที่ vb แบบนี้เกิดจากอะไร จะแก้ไขอย่างไ

Posted: Sat Feb 23, 2013 4:38 pm
by godman
ผมทำได้แล้วครับ ดีใจมาก ผมเพียงลงคำว่า Workbook_sheetchange ให้เหลือเพียงคำว่า workbook_change มันก็หาย error เลยครับ สุดยอด ขอบคุณมากครับ

Re: Error pivot table ที่ vb แบบนี้เกิดจากอะไร จะแก้ไขอย่างไ

Posted: Sat Feb 23, 2013 5:27 pm
by snasui
:lol: อยากทราบว่า ถ้าลบ Event workbook_change ทิ้งไปมันจะ Error หรือไม่ครับ :?:

Re: Error pivot table ที่ vb แบบนี้เกิดจากอะไร จะแก้ไขอย่างไ

Posted: Sun Feb 24, 2013 7:53 pm
by godman
จริงแล้วผมเปลี่ยนโค้ดใหม่แล้วครับ ไม่โอเค เลย ผมเลยเข้าเวปต่างประเทศอื่นและขอใช้โค้ดเขา ตอนนี้ไม่มีปัญหาแล้วครับ แนวทางของ vb developer แต่ละคนในการเขียนโค้ดก็แตกต่างกันในสถานการณ์เดียวกัน ผมได้ของคนใหม่แล้วครับ จากเวปนี้ http://blog.contextures.com