Page 1 of 1

สอบถามการใช้ Public Function Custom

Posted: Sat Jul 21, 2018 7:11 pm
by primeval
https://www.jkp-ads.com/articles/slicers05.asp

จากลิ้งนี้

Code: Select all

Public Function GetSelectedSlicerItems(SlicerName As String) As String
    Dim oSc As SlicerCache
    Dim oSi As SlicerItem
    Dim lCt As Long
    On Error Resume Next
    Application.Volatile
    Set oSc = ThisWorkbook.SlicerCaches(SlicerName)
    If Not oSc Is Nothing Then
        For Each oSi In oSc.SlicerItems
            If oSi.Selected Then
                GetSelectedSlicerItems = GetSelectedSlicerItems & oSi.Name & ", "
                lCt = lCt + 1
            End If
        Next
        If Len(GetSelectedSlicerItems) > 0 Then
            If lCt = oSc.SlicerItems.Count Then
                GetSelectedSlicerItems = "All Items"
            Else
                GetSelectedSlicerItems = Left(GetSelectedSlicerItems, Len(GetSelectedSlicerItems) - 2)
            End If
        Else
            GetSelectedSlicerItems = "No items selected"
        End If
    Else
        GetSelectedSlicerItems = "No slicer with name '" & SlicerName & "' was found"
    End If
End Function
เราจะเรียกใช้ Formula ใน VBA อย่างไรครับ =GetSelectedSlicerItems("Slicer_TeamID2") เนื่องจากว่า Code ดังกล่าวเหมือนมีการสร้างคำสั่งขึ้นมาใหม่ใน VBA ทำให้ติด Error ครับ

Code: Select all

ActiveCell.FormulaR1C1 = "=GetSelectedSlicerItems(""Slicer_TeamID2"")"
ตอนนี้ผ่านและ แต่ว่าทำไม ผลลัพธ์เป็น True อยากให้แสดงค่าดังกล่าวทำอย่างไรครับ

Re: สอบถามการใช้ Public Function Custom

Posted: Sat Jul 21, 2018 8:49 pm
by snasui
:D การเรียกใช้ใน VBA สามารถเขียนได้เป็นด้านล่างครับ

Code: Select all

activecell.value = GetSelectedSlicerItems("Slicer_TeamID2")

Re: สอบถามการใช้ Public Function Custom

Posted: Sat Jul 21, 2018 9:04 pm
by primeval

Code: Select all

stword3 = ActiveCell.Value = GetSelectedSlicerItems("Slicer_รหัส_สาขา")
stword = "รายงานต่อใบอนุญาต สาขา"
stword4 = "ตัวแทน ประกันวินาศภัย"
stword5 = "ประเภทใบอนุญาต"
Range("A9") = stword & " " & stword3 & " " & stword5 & " " & stword4
ค่ากลายเป็น False ครับ
กหฟ.xlsm

Re: สอบถามการใช้ Public Function Custom

Posted: Sat Jul 21, 2018 9:13 pm
by snasui
:D บรรทัดนี้ต้องการจะทำอะไรครับ

stword3 = ActiveCell.Value = GetSelectedSlicerItems("Slicer_รหัส_สาขา")

หากต้องการให้ตัวแปร stwword มีค่าเท่ากับผลลัพธ์ของฟังก์ชั่น GetSelectedSlicerItems ให้เขียนตามด้านล่าง

stword3 = GetSelectedSlicerItems("Slicer_รหัส_สาขา")

ไม่สามารถกำหนดค่าซ้อน ๆ กันไปตามลักษณะที่เขียนมาได้ เขียนกำหนดค่าได้ทีละตัว ถ้ากำหนดให้หลายตัวต้องแยกเป็นหลายบรรทัด เช่นนี้เป็นต้นครับ

Re: สอบถามการใช้ Public Function Custom

Posted: Sat Jul 21, 2018 9:30 pm
by primeval
snasui wrote: Sat Jul 21, 2018 9:13 pm :D บรรทัดนี้ต้องการจะทำอะไรครับ

stword3 = ActiveCell.Value = GetSelectedSlicerItems("Slicer_รหัส_สาขา")

หากต้องการให้ตัวแปร stwword มีค่าเท่ากับผลลัพธ์ของฟังก์ชั่น GetSelectedSlicerItems ให้เขียนตามด้านล่าง

stword3 = GetSelectedSlicerItems("Slicer_รหัส_สาขา")

ไม่สามารถกำหนดค่าซ้อน ๆ กันไปตามลักษณะที่เขียนมาได้ เขียนกำหนดค่าได้ทีละตัว ถ้ากำหนดให้หลายตัวต้องแยกเป็นหลายบรรทัด เช่นนี้เป็นต้นครับ
เก็บตัวแปรสูตรตัวนี้จากประกาศใช้สูตร Public Function "=GetSelectedSlicerItems(""Slicer_TeamID2"")" ตัวนี้ครับ ลองใช้คำสั่งพวก Formula แต่ว่าไม่ได้ เลยไม่แน่ใจวิธีการใช้งานครับ

stword3 = GetSelectedSlicerItems("Slicer_รหัส_สาขา") ปรับคำสั่งนี้ ถูกต้องเลยครับ ขอบคุณครับ