Page 1 of 1

VBA sort code เดียว กดสลับไปมาระหว่าง A-Z,Z-A ทำได้ไหมครับ

Posted: Sun Dec 04, 2022 8:31 pm
by poon747
VBA sort code เดียว กดสลับไปมาระหว่าง A-Z,Z-A ทำได้ไหมครับ
ตอนนี้ บันทึก code จาก macro แล้วทำ 2 ปุ่ม A-Z 1 ปุ่ม และ Z-A อีก 1 ปุ่มครับ

Re: VBA sort code เดียว กดสลับไปมาระหว่าง A-Z,Z-A ทำได้ไหมครับ

Posted: Sun Dec 04, 2022 9:13 pm
by snasui
:D ทำได้ครับ

ลองแนบไฟล์นั้นมาด้วยจะได้สะดวกในการตอบของเพื่อนสมาชิกครับ

Re: VBA sort code เดียว กดสลับไปมาระหว่าง A-Z,Z-A ทำได้ไหมครับ

Posted: Sun Dec 04, 2022 10:12 pm
by poon747
ขอบคุณครับ ตัวอย่างไฟล์ครับ

Re: VBA sort code เดียว กดสลับไปมาระหว่าง A-Z,Z-A ทำได้ไหมครับ

Posted: Mon Dec 05, 2022 5:26 am
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Dim odr As Integer
With ActiveSheet.Shapes("TextBox 1").TextEffect
    If .Text = "A-Z" Then
        odr = xlAscending
        .Text = "Z-A"
    Else
        odr = xlDescending
        .Text = "A-Z"
    End If
End With

Range("C2:C13").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("C2:C13") _
    , SortOn:=xlSortOnValues, Order:=odr, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
    .SetRange Range("C2:C13")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Range("C2").Select

Re: VBA sort code เดียว กดสลับไปมาระหว่าง A-Z,Z-A ทำได้ไหมครับ

Posted: Mon Dec 05, 2022 9:51 am
by poon747
ขอบคุณอาจารย์มากๆ ผลที่ได้ ตามต้องการเลยครับ

Re: VBA sort code เดียว กดสลับไปมาระหว่าง A-Z,Z-A ทำได้ไหมครับ

Posted: Mon Dec 05, 2022 12:34 pm
by poon747
รบกวนอีกครั้งครับ ใช้ code ที่อาจารย์ปรับให้แล้ว เครื่องตัวเอง รันได้ปกติ
แต่พอส่งเมล์ให้อีกคน เป็น V.2013 รันแล้ว error 438 ครับ

Re: VBA sort code เดียว กดสลับไปมาระหว่าง A-Z,Z-A ทำได้ไหมครับ

Posted: Mon Dec 05, 2022 2:05 pm
by snasui
:D Error นี้แม้ส่งไฟล์เดิมที่ยังไม่ปรับ Code ไปก็เกิด Error เช่นเดียวกัน เข้าใจว่าโปรแกรมในเครื่องที่เกิด Error ไม่รองรับ .Add2 ครับ

ลองปรับ

ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("C2:C13") _

เป็น

ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2") _

Ref: https://learn.microsoft.com/en-us/offic ... fields.add
https://learn.microsoft.com/en-us/offic ... ields.add2

Re: VBA sort code เดียว กดสลับไปมาระหว่าง A-Z,Z-A ทำได้ไหมครับ

Posted: Mon Dec 05, 2022 4:00 pm
by poon747
ปรับใช้ code ใหม่ ทำได้ละครับ
ขอบคุณสำหรับ code และข้อมูลอ้างอิง จะนำไปศึกษาเพิ่มเติมครับ