:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#1

Post by primeval »

Code: Select all

For Each slcCache In ActiveWorkbook.SlicerCaches
        slcCache.ClearManualFilter
Next

With ActiveWorkbook.SlicerCaches("Slicer_ชื่อสี")
    For Each oSlicerItem In .SlicerItems
        If oSlicerItem.Name = "น้ำตาล" Then
            oSlicerItem.Selected = True
        Else
            oSlicerItem.Selected = False
        End If
        
    Next oSlicerItem
End With
อยากกำหนดช่วงข้อมูล จาก Slicer แล้วทำการ ปริ้นออกจากที่กำหนดใน VBA จาก Code ดังกล่าว ลองทดสอบวางด้านท้ายของ ของการ ออก PDF มีการลูปข้อมูลใน Slicer จนกว่าจะหมด อยากจะกำหนดข้อมูลการสั่งปริ้นออก เขียว เหลือง แดง จะทำอย่างไรครับ
การเลือกข้อมูลจาก Slicer แล้วปริ้นออก.xlsm
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#2

Post by snasui »

:D แนบไฟล์ที่มี Slicer มาด้วยจะได้ช่วยทดสอบได้ครับ
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#3

Post by primeval »

รายการทดสอบ.xlsm
Mudule 4
Sub button pdf99
button สีม่วงปุ่ม

พยายามหาวิธีกำหนด การเลือก Slicer แล้วสั่ง Print PDf แล้วลูปกลับมาใน Slicer ที่เรากำหนดใน VBA สาขา เช่น 003 ลุมพินี 005 พระราม 2 100 บางพลัด ที่ต้องการ Print โดยไม่ต้อง Count พอดีลองหาวิธีในเน็ตส่วนใหญ่จะมีแต่การ นับ ข้อมูลใน Slicer จากข้อมูลที่นึง สุดที่ข้อมูลที่ต้องการโดยไม่ได้มีการข้าม Slicer ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#4

Post by snasui »

:D ลองลำดับการทำงานมาใหม่เป็นข้อครับว่าต้องการทำอะไรก่อนหลังอย่างไรและต้องการผลลัพธ์อย่างไร อ่านแล้วยังไม่กระจ่าง

เท่าที่ดู Code ที่แนบมาเป็นการ Loop เพื่อตรวจสอบว่า Slicer ตัวไหนถูกเลือกอยู่บ้าง แต่ก็ไม่ได้นำค่าที่ถูกเลือกไปใช้ประโยชน์
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#5

Post by primeval »

ผมได้เรียง Code ใหม่ครับขั้นตอนก็ดังนี้เลย

1.เลือกสาขา ที่กำหนด ออกรายงาน(ยังหาวิธีไม่เจอครับ)
2.แปรรูป Clear Filters กำหนดสีตาราง
3.resize Table แล้วปรับตาราง ปรับการ Print ให้ตรงกับ Offset
4.เก็บค่าตัวแปร เพื่อเตรียมตั้งชื่อ PDF
5.ออก PDF
5.สำรวจเงื่อนไข Next จากการกำหนดสาขา
6.จบการทำงาน

Module 5

Code: Select all

Sub Button99_PDF()

Dim wsA As Worksheet
Dim wbA As Workbook
Dim strTime As String
Dim strName As String
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
Dim codebranch As String
Dim branchname As String
Dim lictype As String
On Error GoTo errHandler

      Dim tblRaw As ListObject, tblFiltered As ListObject
      Dim sh_raw As Worksheet, sh_filtered As Worksheet
      Dim critRange As Range, copyToRng As Range, resizeRng As Range
      Dim startRow As Long, lastRow As Long

Dim slItem As SlicerItem
Dim i As Long


    

10    Application.ScreenUpdating = False
20    Application.EnableEvents = False
30    Application.Calculation = xlCalculationManual

If Sheets("Pivot_Filters").Range("a8").Value = "" Then Exit Sub
Set wsPF = ThisWorkbook.Sheets("Pivot_Filters")
Set wsSD = ThisWorkbook.Sheets("SalesData")
Set wsOP = ThisWorkbook.Sheets("Output")
Set tblFiltered = wsOP.ListObjects("table2")
Set ws = ThisWorkbook.Sheets("Output")




With ActiveWorkbook.SlicerCaches("Slicer_รหัส_สาขา")
'--deselect all items except the first
.SlicerItems(1).Selected = True
For Each slItem In .VisibleSlicerItems
If slItem.Name <> .SlicerItems(1).Name Then _
slItem.Selected = False
Next slItem

'--step through each item and run custom function
For i = 2 To .SlicerItems.Count
.SlicerItems(i).Selected = True
.SlicerItems(i - 1).Selected = False



Application.ScreenUpdating = True

90    Select Case tblFiltered.ListRows.Count
          Case Is > 0
100           tblFiltered.DataBodyRange.Delete
110           tblFiltered.ListRows.Add
120       Case Else
130           tblFiltered.ListRows.Add
140   End Select


 

    With ActiveWorkbook.SlicerCaches("Slicer_ประเภท_ใบอนุญาต")
        .SlicerItems("ตัวแทน").Selected = True
        .SlicerItems("Micro Insurance").Selected = True
        .SlicerItems("นายหน้าบุคคล").Selected = False
        .SlicerItems("นายหน้านิติบุคคล").Selected = False
        .SlicerItems("พรบ.").Selected = True
                                .SlicerItems("นายหน้า").Selected = False
        .SlicerItems("โบรคเกอร์").Selected = False
        .SlicerItems("ไม่มีบัตร").Selected = False
        .SlicerItems("FALSE").Selected = False
    End With
        With ActiveWorkbook.SlicerCaches("Slicer_ชื่อหลักสูตร")
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 1").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 2").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 3").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 4").Selected = True
        .SlicerItems("ขอรับใบอนุญาตนายหน้าประกันวินาศภัย").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 1").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 2").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 3").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 4").Selected = True
        .SlicerItems("ขอรับใบอนุญาตตัวแทนประกันวินาศภัย").Selected = True
        .SlicerItems("ไม่มีข้อมูล").Selected = False
    End With
ActiveSheet.ListObjects("Table2").TableStyle = "TableStyleLight21"
wsSD.Range("Sales_Data[#All]").AdvancedFilter _
  Action:=xlFilterCopy, _
  CriteriaRange:=wsPF.Range("CritSlicers"), _
  CopyToRange:=wsOP.Range("ExtractSlicers"), _
  Unique:=False
  
      'Find Filtered table Header row
180   startRow = tblFiltered.HeaderRowRange.Row

      'Find last row on Filtered tab (deduct 1 since Advanced filter retrieves the headers)
190   lastRow = wsOP.Columns(2).Find("*", , , , xlByRows, xlPrevious).Row
      'If the last raw is greater than the Header row, resize the Filtered table and delete the retrieved Headers (which will be in the first row of the Filtered table)
200   If lastRow > startRow Then
210       Set resizeRng = Range("table2[#All]").Resize(tblFiltered.Range.Rows.Count + (lastRow - startRow - 1), tblFiltered.Range.Columns.Count)
220       tblFiltered.Resize resizeRng
'230       tblFiltered.ListRows(2).Delete
240   Else
          'If the last row is equal to Header row it means only the Column headers have been fetched, so there is no matching row to the filter criterias
          'The if condition is only for let's say second line of defence
250       If tblFiltered.HeaderRowRange(11, 2) = tblFiltered.DataBodyRange(11, 2) Then
260           tblFiltered.DataBodyRange.Delete
270       End If
280   End If


290   Application.ScreenUpdating = True
300   Application.EnableEvents = True
310   Application.Calculation = xlCalculationAutomatic

   ActiveWorkbook.Worksheets("Output").ListObjects("Table2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Output").ListObjects("Table2").Sort.SortFields.Add2 _
        Key:=Range("Table2[ครั้งที่]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortTextAsNumbers
    ActiveWorkbook.Worksheets("Output").ListObjects("Table2").Sort.SortFields.Add2 _
        Key:=Range("Table2[วัน" & Chr(10) & "หมดอายุ]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Output").ListObjects("Table2").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Worksheets("Output").Columns("A:M").AutoFit
Worksheets("Output").Columns("K").Hidden = True
Worksheets("Output").PageSetup.PrintArea = "PrintFocus"

stword3 = GetSelectedSlicerItems("Slicer_รหัส_สาขา")
stword = "รายงานต่อใบอนุญาต"
stword4 = "ประกันวินาศภัย"
stword5 = GetSelectedSlicerItems2("Slicer_ประเภท_ใบอนุญาต")
Range("A9") = stword & " " & stword3 & " " & stword5 & " " & stword4


If InStr(Range("a9").Value, "นายหน้า") > 0 Then
    lictype = "นายหน้า"
ElseIf InStr(Range("a9").Value, "ตัวแทน") > 0 Then
    lictype = "ตัวแทน"
ElseIf InStr(Range("a9").Value, "ใบอนุญาตทั้งหมด") > 0 Then
    lictype = "ร่วมใบอนุญาต"
End If

codebranch = GetSelectedSlicerItems3("Slicer_รหัส_สาขา")
branchname = GetSelectedSlicerItems("Slicer_รหัส_สาขา")
Set wbA = ActiveWorkbook
Set wsA = ActiveSheet
strTime = Format(Now(), "dd_mm_yy")

'get active workbook folder, if saved
strPath = wbA.Path
If strPath = "" Then
  strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"

'replace spaces and periods in sheet name
strName = Replace(wsA.Name, " ", "")
strName = Replace(strName, ".", "_")

'create default name for savng file
strFile = lictype & "_" & codebranch & "_" & branchname & "_" & strTime & ".pdf"
strPathFile = strPath & strFile

'use can enter name and
' select folder for file
myFile = Application.GetSaveAsFilename _
    (InitialFileName:=strPathFile, _
        filefilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Select Folder and FileName to save")

'export to PDF if a folder was selected
If myFile <> "False" Then
    wsA.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    'confirmation message with file info
    MsgBox "PDF file has been created: " _
      & vbCrLf _
      & myFile
End If


Next i
End With


exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub
รายการทดสอบ.xlsm
ติดปัญหา Loop สาขา จนหมด และยังหาวิธีการกำหนด สาขาที่ต้องการไม่ได้ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#6

Post by snasui »

:D ยกตัวอย่างการเลือกสาขาและตัวอย่างผลลัพธ์ที่ได้จากการเลือกสาขานั้นมาว่าเป็นอย่างไร จะได้เข้าใจตรงกันครับ
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#7

Post by primeval »

snasui wrote: Wed Jul 25, 2018 6:22 pm :D ยกตัวอย่างการเลือกสาขาและตัวอย่างผลลัพธ์ที่ได้จากการเลือกสาขานั้นมาว่าเป็นอย่างไร จะได้เข้าใจตรงกันครับ
ตัวอย่างการเลือกสาขา กลุ่มที่ 1
003 : ลุมพินี
005 : พระราม 2
006 : บางนา
100 : รัชดาภิเษก
101 : บางพลัด
102 : วงศ์สว่าง 2
103 : สุขาภิบาล 3
108 : สำนักงานใหญ่ (108)
109 : ดอนเมือง
110 : กรุงเกษม
112 : สุขสวัสดิ์

กำหนดสาขาดังกล่าว ลงใน VBA โดยให้มีการเลือกแบบ Single Select รันตาม Code ไปเรื่อยๆ แล้วออก PDF จนครบทุกสาขาที่กำหนด ในกลุ่มนี้ครับ (ในบางครั้งอาจจะมีการสลับสาขาไปมา เลยต้องกำหนด เป็นชื่อมากกว่าการ Count ไปเรื่อยๆ ครับ)

อันนี้ก็เป็นชื่อ File และรูปแบบ หลังการเลือก 1 สาขาแล้ว จบที่ปริ้นครับ
ตัวแทน_005_สาขา พระราม 2_25_07_61.pdf
ตัวแทน_101_สาขา บางพลัด_25_07_61.pdf
ตัวแทน_108_สาขา สำนักงานใหญ่ (108)_25_07_61.pdf
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#8

Post by snasui »

:D ตัวอย่าง Code สำหรับการเลือกให้ Print เฉพาะสาขาที่เลือกตามด้านล่างครับ

Code: Select all

Sub test()
    Dim s As SlicerCache, arr(), sPd As SlicerCache
    Dim i As Integer, j As Integer, k As Integer, l As Integer
    For Each s In ActiveWorkbook.SlicerCaches
        With s
            If s.Name = "Slicer_ÃËÑÊ_ÊÒ¢Ò" Then
                Set sPd = ActiveWorkbook.SlicerCaches(s.Name)
                For j = 1 To s.SlicerItems.Count
                    If s.SlicerItems(j).Selected = True Then
                        'Debug.Print s.SlicerItems(j).Name
                        ReDim Preserve arr(i)
                        arr(i) = s.SlicerItems(j).Name
                        i = i + 1
                    End If
                Next j
            End If
        End With
    Next s
    For k = 1 To UBound(arr) + 1
        sPd.ClearManualFilter
        For l = 1 To sPd.SlicerItems.Count - 1
            sPd.SlicerItems(l).Selected = False
        Next l
        sPd.SlicerItems(k).Selected = True
        'Your command for printing.
    Next k
End Sub

primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#9

Post by primeval »

ขอยคุณครับ ขอปรับใช้ก่อนครับ
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#10

Post by primeval »

snasui wrote: Thu Jul 26, 2018 7:15 pm :D ตัวอย่าง Code สำหรับการเลือกให้ Print เฉพาะสาขาที่เลือกตามด้านล่างครับ

Code: Select all

Sub test()
    Dim s As SlicerCache, arr(), sPd As SlicerCache
    Dim i As Integer, j As Integer, k As Integer, l As Integer
    For Each s In ActiveWorkbook.SlicerCaches
        With s
            If s.Name = "Slicer_ÃËÑÊ_ÊÒ¢Ò" Then
                Set sPd = ActiveWorkbook.SlicerCaches(s.Name)
                For j = 1 To s.SlicerItems.Count
                    If s.SlicerItems(j).Selected = True Then
                        'Debug.Print s.SlicerItems(j).Name
                        ReDim Preserve arr(i)
                        arr(i) = s.SlicerItems(j).Name
                        i = i + 1
                    End If
                Next j
            End If
        End With
    Next s
    For k = 1 To UBound(arr) + 1
        sPd.ClearManualFilter
        For l = 1 To sPd.SlicerItems.Count - 1
            sPd.SlicerItems(l).Selected = False
        Next l
        sPd.SlicerItems(k).Selected = True
        'Your command for printing.
    Next k
End Sub


รบกวนใบ้ในส่วน ของชื่อสาขาได้ไหมครับ ลองปรับดูแล้วยังใช่ไม่ค่อยเข้าใจในส่วนของ Array ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#11

Post by snasui »

:D ไม่เข้าใจคำถามครับ

จะปรับตรงไหนต้องเขียนมาเองก่อน ถามเฉพาะที่ติดปัญหาครับ

Code ด้านบนผมเขียนไว้ให้แล้ว เหลือเพียงเขียนสั่งพิมพ์เท่านั้น ผมเข้าใจว่าก่อนจะพิมพ์เป็น PDF ต้องมีการ Filter ข้อมูลมาแสดงด้วย Advanced Filter แล้วค่อยสั่งพิมพ์ เพราะฉะนั้นสิ่งที่ต้องเขียนเพิ่มเข้าไปคือ
  1. Advanced Filter โดยสามารถคัดลอกการประกาศตัวแปรและการทำ Advanced Filter จาก Code เดิมมาวางได้
  2. สั่งพิมพ์เป็น PDF
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#12

Post by primeval »

Code: Select all

Sub Button99_PDF()

Dim wsA As Worksheet
Dim wbA As Workbook
Dim strTime As String
Dim strName As String
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
Dim codebranch As String
Dim branchname As String
Dim lictype As String
On Error GoTo errHandler

      Dim tblRaw As ListObject, tblFiltered As ListObject
      Dim sh_raw As Worksheet, sh_filtered As Worksheet
      Dim critRange As Range, copyToRng As Range, resizeRng As Range
      Dim startRow As Long, lastRow As Long
Dim s As SlicerCache, arr(), sPd As SlicerCache
    Dim i As Integer, j As Integer, k As Integer, l As Integer

10    Application.ScreenUpdating = False
20    Application.EnableEvents = False
30    Application.Calculation = xlCalculationManual

If Sheets("Pivot_Filters").Range("a8").Value = "" Then Exit Sub
Set wsPF = ThisWorkbook.Sheets("Pivot_Filters")
Set wsSD = ThisWorkbook.Sheets("SalesData")
Set wsOP = ThisWorkbook.Sheets("Output")
Set tblFiltered = wsOP.ListObjects("table2")
Set ws = ThisWorkbook.Sheets("Output")

For Each s In ActiveWorkbook.SlicerCaches
        With s
            If s.Name = "Slicer_รหัส_สาขา" Then
                Set sPd = ActiveWorkbook.SlicerCaches(s.Name)
                For j = 1 To s.SlicerItems.Count
                    If s.SlicerItems(j).Selected = True Then
                        'Debug.Print s.SlicerItems(j).Name
                        ReDim Preserve arr(i)
                        arr(i) = s.SlicerItems(j).Name
                        i = i + 1
                    End If
                Next j
            End If
        End With
    Next s
    For k = 1 To UBound(arr) + 1
        sPd.ClearManualFilter
        For l = 1 To sPd.SlicerItems.Count - 1
            sPd.SlicerItems(l).Selected = False
        Next l
        sPd.SlicerItems(k).Selected = True

90    Select Case tblFiltered.ListRows.Count
          Case Is > 0
100           tblFiltered.DataBodyRange.Delete
110           tblFiltered.ListRows.Add
120       Case Else
130           tblFiltered.ListRows.Add
140   End Select

    

    With ActiveWorkbook.SlicerCaches("Slicer_ประเภท_ใบอนุญาต")
        .SlicerItems("ตัวแทน").Selected = True
        .SlicerItems("Micro Insurance").Selected = True
        .SlicerItems("นายหน้าบุคคล").Selected = False
        .SlicerItems("นายหน้านิติบุคคล").Selected = False
        .SlicerItems("พรบ.").Selected = True
                                .SlicerItems("นายหน้า").Selected = False
        .SlicerItems("โบรคเกอร์").Selected = False
        .SlicerItems("ไม่มีบัตร").Selected = False
        .SlicerItems("FALSE").Selected = False
    End With
        With ActiveWorkbook.SlicerCaches("Slicer_ชื่อหลักสูตร")
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 1").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 2").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 3").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 4").Selected = True
        .SlicerItems("ขอรับใบอนุญาตนายหน้าประกันวินาศภัย").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 1").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 2").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 3").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 4").Selected = True
        .SlicerItems("ขอรับใบอนุญาตตัวแทนประกันวินาศภัย").Selected = True
        .SlicerItems("ไม่มีข้อมูล").Selected = False
    End With
ActiveSheet.ListObjects("Table2").TableStyle = "TableStyleLight21"
wsSD.Range("Sales_Data[#All]").AdvancedFilter _
  Action:=xlFilterCopy, _
  CriteriaRange:=wsPF.Range("CritSlicers"), _
  CopyToRange:=wsOP.Range("ExtractSlicers"), _
  Unique:=False
  
      'Find Filtered table Header row
180   startRow = tblFiltered.HeaderRowRange.Row

      'Find last row on Filtered tab (deduct 1 since Advanced filter retrieves the headers)
190   lastRow = wsOP.Columns(2).Find("*", , , , xlByRows, xlPrevious).Row
      'If the last raw is greater than the Header row, resize the Filtered table and delete the retrieved Headers (which will be in the first row of the Filtered table)
200   If lastRow > startRow Then
210       Set resizeRng = Range("table2[#All]").Resize(tblFiltered.Range.Rows.Count + (lastRow - startRow - 1), tblFiltered.Range.Columns.Count)
220       tblFiltered.Resize resizeRng
'230       tblFiltered.ListRows(2).Delete
240   Else
          'If the last row is equal to Header row it means only the Column headers have been fetched, so there is no matching row to the filter criterias
          'The if condition is only for let's say second line of defence
250       If tblFiltered.HeaderRowRange(11, 2) = tblFiltered.DataBodyRange(11, 2) Then
260           tblFiltered.DataBodyRange.Delete
270       End If
280   End If


290   Application.ScreenUpdating = True
300   Application.EnableEvents = True
310   Application.Calculation = xlCalculationAutomatic

   ActiveWorkbook.Worksheets("Output").ListObjects("Table2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Output").ListObjects("Table2").Sort.SortFields.Add2 _
        Key:=Range("Table2[ครั้งที่]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortTextAsNumbers
    ActiveWorkbook.Worksheets("Output").ListObjects("Table2").Sort.SortFields.Add2 _
        Key:=Range("Table2[วัน" & Chr(10) & "หมดอายุ]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Output").ListObjects("Table2").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Worksheets("Output").Columns("A:M").AutoFit
Worksheets("Output").Columns("K").Hidden = True
Worksheets("Output").PageSetup.PrintArea = "PrintFocus"

stword3 = GetSelectedSlicerItems("Slicer_รหัส_สาขา")
stword = "รายงานต่อใบอนุญาต"
stword4 = "ประกันวินาศภัย"
stword5 = GetSelectedSlicerItems2("Slicer_ประเภท_ใบอนุญาต")
Range("A9") = stword & " " & stword3 & " " & stword5 & " " & stword4


If InStr(Range("a9").Value, "นายหน้า") > 0 Then
    lictype = "นายหน้า"
ElseIf InStr(Range("a9").Value, "ตัวแทน") > 0 Then
    lictype = "ตัวแทน"
ElseIf InStr(Range("a9").Value, "ใบอนุญาตทั้งหมด") > 0 Then
    lictype = "ร่วมใบอนุญาต"
End If

codebranch = GetSelectedSlicerItems3("Slicer_รหัส_สาขา")
branchname = GetSelectedSlicerItems("Slicer_รหัส_สาขา")
Set wbA = ActiveWorkbook
Set wsA = ActiveSheet
strTime = Format(Now(), "dd_mm_yy")

'get active workbook folder, if saved
strPath = wbA.Path
If strPath = "" Then
  strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"

'replace spaces and periods in sheet name
strName = Replace(wsA.Name, " ", "")
strName = Replace(strName, ".", "_")

'create default name for savng file
strFile = lictype & "_" & codebranch & "_" & branchname & "_" & strTime & ".pdf"
strPathFile = strPath & strFile

'use can enter name and
' select folder for file
myFile = Application.GetSaveAsFilename _
    (InitialFileName:=strPathFile, _
        filefilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Select Folder and FileName to save")

'export to PDF if a folder was selected
If myFile <> "False" Then
    wsA.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    'confirmation message with file info
    MsgBox "PDF file has been created: " _
      & vbCrLf _
      & myFile
End If


Next k


exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub
code ที่ได้เขียนให้ไม่มีปัญหาครับ แต่อยากสอบถามว่าจะกำหนด กลุ่มสาขาในการ Loop ได้ไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#13

Post by snasui »

:D Code ที่ผมเขียนให้ กลุ่มสาขากำหนดจากการเลือกเองจาก Slicer เลือกอะไรมาก็จะ Print ที่เลือก ไม่เช่นนั้นจะต้องระบุมาว่าเลือกสาขาจากไหน อย่างไรครับ
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#14

Post by primeval »

Code: Select all

    With ActiveWorkbook.SlicerCaches("Slicer_ประเภท_ใบอนุญาต")
        .SlicerItems("ตัวแทน").Selected = True
        .SlicerItems("Micro Insurance").Selected = True
        .SlicerItems("นายหน้าบุคคล").Selected = False
        .SlicerItems("นายหน้านิติบุคคล").Selected = False
        .SlicerItems("พรบ.").Selected = True
                                .SlicerItems("นายหน้า").Selected = False
        .SlicerItems("โบรคเกอร์").Selected = False
        .SlicerItems("ไม่มีบัตร").Selected = False
        .SlicerItems("FALSE").Selected = False
    End With
        With ActiveWorkbook.SlicerCaches("Slicer_ชื่อหลักสูตร")
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 1").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 2").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 3").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 4").Selected = True
        .SlicerItems("ขอรับใบอนุญาตนายหน้าประกันวินาศภัย").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 1").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 2").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 3").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 4").Selected = True
        .SlicerItems("ขอรับใบอนุญาตตัวแทนประกันวินาศภัย").Selected = True
        .SlicerItems("ไม่มีข้อมูล").Selected = False
    End With
สาขาที่ต้องการ เช่น
003 : ลุมพินี
101 : บางพลัด
210 : พัทยา
504 : นครสวรรค์

ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#15

Post by snasui »

primeval wrote: Wed Aug 01, 2018 10:44 pm

Code: Select all

    With ActiveWorkbook.SlicerCaches("Slicer_ประเภท_ใบอนุญาต")
        .SlicerItems("ตัวแทน").Selected = True
        .SlicerItems("Micro Insurance").Selected = True
        .SlicerItems("นายหน้าบุคคล").Selected = False
        .SlicerItems("นายหน้านิติบุคคล").Selected = False
        .SlicerItems("พรบ.").Selected = True
                                .SlicerItems("นายหน้า").Selected = False
        .SlicerItems("โบรคเกอร์").Selected = False
        .SlicerItems("ไม่มีบัตร").Selected = False
        .SlicerItems("FALSE").Selected = False
    End With
        With ActiveWorkbook.SlicerCaches("Slicer_ชื่อหลักสูตร")
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 1").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 2").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 3").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตนายหน้าประกันวินาศภัยครั้งที่ 4").Selected = True
        .SlicerItems("ขอรับใบอนุญาตนายหน้าประกันวินาศภัย").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 1").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 2").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 3").Selected = True
        .SlicerItems("ขอต่อใบอนุญาตตัวแทนประกันวินาศภัยครั้งที่ 4").Selected = True
        .SlicerItems("ขอรับใบอนุญาตตัวแทนประกันวินาศภัย").Selected = True
        .SlicerItems("ไม่มีข้อมูล").Selected = False
    End With
สาขาที่ต้องการ เช่น
003 : ลุมพินี
101 : บางพลัด
210 : พัทยา
504 : นครสวรรค์

ครับ
:D ที่เขียนมาไม่ใช่ Slicer สาขาครับ การเลือกสาขาผมตอบไปแล้ว ไม่เข้าใจตรงจุดไหนให้ถามตรงจุดนั้น หรือจะอธิบายเพิ่มก็กรุณาอธิบายมาโดยละเอียดครับ
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#16

Post by primeval »

snasui wrote: Wed Aug 01, 2018 8:32 pm :D ไม่เข้าใจคำถามครับ

จะปรับตรงไหนต้องเขียนมาเองก่อน ถามเฉพาะที่ติดปัญหาครับ

Code ด้านบนผมเขียนไว้ให้แล้ว เหลือเพียงเขียนสั่งพิมพ์เท่านั้น ผมเข้าใจว่าก่อนจะพิมพ์เป็น PDF ต้องมีการ Filter ข้อมูลมาแสดงด้วย Advanced Filter แล้วค่อยสั่งพิมพ์ เพราะฉะนั้นสิ่งที่ต้องเขียนเพิ่มเข้าไปคือ
  1. Advanced Filter โดยสามารถคัดลอกการประกาศตัวแปรและการทำ Advanced Filter จาก Code เดิมมาวางได้
  2. สั่งพิมพ์เป็น PDF
ผมอ่านไม่เคลียเองครับ
ผมเลือกสาขา 210 504 703 แต่ VBA ยังมีการไปเลือกที่ Slicer ลำดับ 3 ข้อมูลแรก 003 005 101
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#17

Post by snasui »

primeval wrote: Wed Aug 01, 2018 11:24 pm ผมอ่านไม่เคลียเองครับ
ผมเลือกสาขา 210 504 703 แต่ VBA ยังมีการไปเลือกที่ Slicer ลำดับ 3 ข้อมูลแรก 003 005 101
:D ดูอย่างไรว่าเป็นการเลือกตามนั้นครับ :roll:
  1. สิ่งที่ผมเขียนไปคือ เก็บข้อมูลว่าผู้ใช้เลือก Slicer ตัวไหน
  2. ปลด Slicer ทั้งหมด
  3. เลือก Slicer ทีละตัวตามที่ผู้ใช้เลือก เมื่อเลือกแล้วจะมีสิ่งที่จะต้องทำเพิ่มคือ
    1. ทำ Advanced Filter
    2. สั่งพิมพ์เป็น PDF
การทำงานตามด้านบนไม่ว่าจะปลดหรือจะเลือก Slicer ก็ตาม Pivot Table ก็จะทำงานทุกขั้นตอนเพราะผูกติดอยู่กับ Slicer จะดูลำพังการทำงานของ PivotTable ไม่ได้ครับ
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#18

Post by primeval »

snasui wrote: Wed Aug 01, 2018 11:36 pm
primeval wrote: Wed Aug 01, 2018 11:24 pm ผมอ่านไม่เคลียเองครับ
ผมเลือกสาขา 210 504 703 แต่ VBA ยังมีการไปเลือกที่ Slicer ลำดับ 3 ข้อมูลแรก 003 005 101
:D ดูอย่างไรว่าเป็นการเลือกตามนั้นครับ :roll:
  1. สิ่งที่ผมเขียนไปคือ เก็บข้อมูลว่าผู้ใช้เลือก Slicer ตัวไหน
  2. ปลด Slicer ทั้งหมด
  3. เลือก Slicer ทีละตัวตามที่ผู้ใช้เลือก เมื่อเลือกแล้วจะมีสิ่งที่จะต้องทำเพิ่มคือ
    1. ทำ Advanced Filter
    2. สั่งพิมพ์เป็น PDF
การทำงานตามด้านบนไม่ว่าจะปลดหรือจะเลือก Slicer ก็ตาม Pivot Table ก็จะทำงานทุกขั้นตอนเพราะผูกติดอยู่กับ Slicer จะดูลำพังการทำงานของ PivotTable ไม่ได้ครับ
Advanced Filter เขียนต่อเนื่องลงมาจากบรรทัดนี้ใช้ไหมครับ คำสั่ง Print ได้แล้ว

Code: Select all

        Next l
        sPd.SlicerItems(k).Selected = True
        "Advanced Filter"
        "คำสั่ง Print PDF"
        
ผมไม่แน่ใจว่าต้องแทรกระหว่างช่วงไหนครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#19

Post by snasui »

primeval wrote: Thu Aug 02, 2018 12:56 am Advanced Filter เขียนต่อเนื่องลงมาจากบรรทัดนี้ใช้ไหมครับ คำสั่ง Print ได้แล้ว

Code: Select all

       Next l
        sPd.SlicerItems(k).Selected = True
        "Advanced Filter"
        "คำสั่ง Print PDF"
:D เข้าใจถูกต้องแล้วครับ
primeval
Member
Member
Posts: 116
Joined: Thu Oct 15, 2015 11:21 pm

Re: สอบถาม การเลือกข้อมูลจาก Slicer แล้วปริ้นออก

#20

Post by primeval »

snasui wrote: Thu Aug 02, 2018 6:04 am
primeval wrote: Thu Aug 02, 2018 12:56 am Advanced Filter เขียนต่อเนื่องลงมาจากบรรทัดนี้ใช้ไหมครับ คำสั่ง Print ได้แล้ว

Code: Select all

       Next l
        sPd.SlicerItems(k).Selected = True
        "Advanced Filter"
        "คำสั่ง Print PDF"
:D เข้าใจถูกต้องแล้วครับ
ผม copy Code เดิมมาวางเพิ่ม
"Advance Filtrer เดิม"

Code: Select all

wsSD.Range("Sales_Data[#All]").AdvancedFilter _
  Action:=xlFilterCopy, _
  CriteriaRange:=wsPF.Range("CritSlicers"), _
  CopyToRange:=wsOP.Range("ExtractSlicers"), _
  Unique:=False
ที่เหลือก้เป็น PDF
"Code สั่ง Print PDF"

Code: Select all

stword3 = GetSelectedSlicerItems("Slicer_รหัส_สาขา")
stword = "รายงานต่อใบอนุญาต"
stword4 = "ประกันวินาศภัย"
stword5 = GetSelectedSlicerItems2("Slicer_ประเภท_ใบอนุญาต")
Range("A9") = stword & " " & stword3 & " " & stword5 & " " & stword4


If InStr(Range("a9").Value, "นายหน้า") > 0 Then
    lictype = "นายหน้า"
ElseIf InStr(Range("a9").Value, "ตัวแทน") > 0 Then
    lictype = "ตัวแทน"
ElseIf InStr(Range("a9").Value, "ใบอนุญาตทั้งหมด") > 0 Then
    lictype = "ร่วมใบอนุญาต"
End If

codebranch = GetSelectedSlicerItems3("Slicer_รหัส_สาขา")
branchname = GetSelectedSlicerItems("Slicer_รหัส_สาขา")
Set wbA = ActiveWorkbook
Set wsA = ActiveSheet
strTime = Format(Now(), "dd_mm_yy")

'get active workbook folder, if saved
strPath = wbA.Path
If strPath = "" Then
  strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"

'replace spaces and periods in sheet name
strName = Replace(wsA.Name, " ", "")
strName = Replace(strName, ".", "_")

'create default name for savng file
strFile = lictype & "_" & codebranch & "_" & branchname & "_" & strTime & ".pdf"
strPathFile = strPath & strFile

'use can enter name and
' select folder for file
myFile = Application.GetSaveAsFilename _
    (InitialFileName:=strPathFile, _
        filefilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Select Folder and FileName to save")

'export to PDF if a folder was selected
If myFile <> "False" Then
    wsA.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    'confirmation message with file info
    MsgBox "PDF file has been created: " _
      & vbCrLf _
      & myFile
End If
ยังงี้ถูกต้องใช้ไหมครับง
Post Reply