Page 1 of 1
สอบถามเรื่อง Pivot table with VBA in Excel
Posted: Sat Jul 07, 2018 4:02 pm
by Leng
Code: Select all
Private Sub REPORT_Click()
Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As pivottable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("PivotTable").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "PivotTable"
Application.DisplayAlerts = True
Set PSheet = Worksheets("PivotTable")
Set DSheet = Worksheets("Data")
LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, sourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="PivotTable")
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(1, 1), TableName:="PivotTable")
Sheets("PivotTable").Select
Sheets("PivotTable").Select
With ActiveSheet.PivotTables("PivotTable").PivotFields("Stlye")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable").PivotFields("Around")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable").AddDataField ActiveSheet.PivotTables( _
"PivotTable").PivotFields("No"), "Sum of amount", xlSum
End Sub
พอดีผมต้องการ Pivot table โดยใช้ VBA ครับ
คือผมต้องการสรุปผลในหน้า Data โดยให้ใช้ Pivot table เป็นการสรุป
แต่โค๊ดที่ทำมา ไม่รู้ว่าติดอะไรรบกวนอาจารย์ช่วยดูด้วยนะครับ
Re: สอบถามเรื่อง Pivot table with VBA in Excel
Posted: Sat Jul 07, 2018 4:15 pm
by snasui

ช่วยแนบไฟล์ที่เขียน Code นี้มาด้วยจะได้ช่วยดูให้ได้ครับ
กรณีการสร้างรายงานด้วย PivotTable สามารถบันทึก Macro แล้วนำ Code มาปรับใช้ได้ครับ
Re: สอบถามเรื่อง Pivot table with VBA in Excel
Posted: Mon Jul 09, 2018 8:49 am
by Leng
Code: Select all
Private Sub REPORT_Click()
Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As pivottable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("PivotTable").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "PivotTable"
Application.DisplayAlerts = True
Set PSheet = Worksheets("PivotTable")
Set DSheet = Worksheets("Data")
LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, sourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="PivotTable")
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(1, 1), TableName:="PivotTable")
Sheets("PivotTable").Select
Sheets("PivotTable").Select
With ActiveSheet.PivotTables("PivotTable").PivotFields("Stlye")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable").PivotFields("Around")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable").AddDataField ActiveSheet.PivotTables( _
"PivotTable").PivotFields("No"), "Sum of amount", xlSum
End Sub
ผมได้ ไปลองดูจากเว็บต่างชาติมาครับวิธี Pivot table with VBA in Excel คือผมอยากทำเป็น report ออกมา โดยการใช้ vba เพราะถ้าทำค้างไว้จะทำให้ไฟล์งานหนักมาก
สิ่งที่ผมต้องการ
ต้องการสรุปยอดโดยการคลิ๊กปุ่มครับ
Re: สอบถามเรื่อง Pivot table with VBA in Excel
Posted: Mon Jul 09, 2018 6:37 pm
by snasui

ช่วยแจ้งประเด็นปัญหาของไฟล์ที่ทำมาแล้วว่าติดขัดปัญหาตรงไหน อย่างไร จะได้เข้าถึงปัญหาโดยไวครับ
Re: สอบถามเรื่อง Pivot table with VBA in Excel
Posted: Thu Jul 12, 2018 8:24 am
by Leng
ปัญหาคือไม่สามารถ Pivot table ได้ครับไม่รู้โค๊ดผิดตรงไหนรึป่าว
Re: สอบถามเรื่อง Pivot table with VBA in Excel
Posted: Thu Jul 12, 2018 7:07 pm
by snasui

ช่วยลำดับการทดสอบมาให้ด้วยจะได้เข้าถึงปัญหาโดยไว
กรณีโปรแกรมยังไม่แล้วเสร็จยังไม่จำเป็นต้องเขียนให้ออกจากโปรแกรม ถ้าเขียนไว้แล้วให้ Mark เป็น Comment ไว้ก่อน เพราะจะเกิดความไม่สะดวกต่อการ Debug ครับ