: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

ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมาก

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมาก

#1

Post by sakajohn »

สวัสดีครับ

ผมสร้างฟอร์มกรอกข้อมูลใน sheet "แก้ไขราคา" เมื่อเรากดปุ่มบันทึก ค่าก็จะถูกบันทึกที่ Sheet "Data1" โดยจะต้องเรียงลำดับจากน้อยไปมาก ตอนนี้ผมเขียนโค๊ต คือมันจะเรียงจากน้อยไปมากแค่ 2 แถวแรก เมื่อบันทึกเพิ่มแถวที่ 3 มันจะไม่เรียงแล้วครับ

จะต้องแก้ไขยังไงครับ

Code: Select all

Private Sub cmdEdite_Click()

If Application.CountA(Range("N12")) = 0 Then
        MsgBox "กรุณาใส่ราคา"
    Exit Sub
End If

Dim rg As Range

Set rg = Range("i4")

rg.Activate
If rg.Value = "" Then Exit Sub
If IsDuplicate(rg.Value) Then
    MsgBox "ข้อมูลซ้ำเรียกหัวหน้าแก้ไข", vbCritical
    Exit Sub
End If

With Worksheets("DATA1")
    With .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
      .Offset(0, 0).Value = rg.Offset(0, 0).Value 'เลขที่เอกสาร
        .Offset(0, 1).Value = rg.Offset(0, 5).Value 'วันที่
        .Offset(0, 2).Value = rg.Offset(0, -5).Value 'ชื่อบริษัท
        .Offset(0, 3).Value = rg.Offset(2, -5).Value 'ชื่อผู้ติดต่อ
        .Offset(0, 4).Value = rg.Offset(4, -5).Value 'เบอร์โทรลูกค้า
        .Offset(0, 5).Value = rg.Offset(2, 0).Value 'ชื่อฝ่ายขาย
        .Offset(0, 6).Value = rg.Offset(4, 0).Value 'เบอร์โทรฝ่ายขาย
        .Offset(0, 7).Value = rg.Offset(2, 5).Value 'REV
        .Offset(0, 8).Value = rg.Offset(8, -7).Value 'รายการที่
        .Offset(0, 9).Value = rg.Offset(8, -5).Value 'รายการ
        .Offset(0, 10).Value = rg.Offset(8, 0).Value 'ขนาด
        .Offset(0, 11).Value = rg.Offset(8, 1).Value 'ขนาด
        .Offset(0, 12).Value = rg.Offset(10, -4).Value 'วัตถุดิบ
        .Offset(0, 13).Value = rg.Offset(10, 5).Value 'ราคาวัตถุดิบ
        .Offset(0, 14).Value = rg.Offset(12, -3).Value 'เคลือบ
        .Offset(0, 15).Value = rg.Offset(13, 3).Value 'ราคาเคลือบ
        .Offset(0, 16).Value = rg.Offset(12, -1).Value 'งานพิเศษ
        .Offset(0, 17).Value = rg.Offset(13, 5).Value 'ราคางานพิเศษ
        .Offset(0, 18).Value = rg.Offset(12, -5).Value 'สี
        .Offset(0, 19).Value = rg.Offset(8, 3).Value 'จำนวน1
        .Offset(0, 20).Value = rg.Offset(8, 4).Value 'ราคา1
        .Offset(0, 21).Value = rg.Offset(10, 3).Value 'จำนวน2
        .Offset(0, 22).Value = rg.Offset(10, 4).Value 'ราคา2
        .Offset(0, 23).Value = rg.Offset(12, 3).Value 'จำนวน3
        .Offset(0, 24).Value = rg.Offset(12, 4).Value 'ราคา3
        .Offset(0, 25).Value = rg.Offset(8, 5).Value 'หมายเหตุ1
        .Offset(0, 26).Value = rg.Offset(15, -7).Value 'รายการที่2
        .Offset(0, 27).Value = rg.Offset(15, -5).Value 'รายการ2
        .Offset(0, 28).Value = rg.Offset(15, 0).Value 'ขนาด2
        .Offset(0, 29).Value = rg.Offset(15, 2).Value 'ขนาด2
        .Offset(0, 30).Value = rg.Offset(17, -4).Value 'วัตถุดิบ2
        .Offset(0, 31).Value = rg.Offset(17, 5).Value 'ราคาวัตถุดิบ2
        .Offset(0, 32).Value = rg.Offset(19, -3).Value 'เคลือบ2
        .Offset(0, 33).Value = rg.Offset(20, 3).Value 'ราคาเคลือบ2
        .Offset(0, 34).Value = rg.Offset(19, -1).Value 'งานพิเศษ2
        .Offset(0, 35).Value = rg.Offset(20, 5).Value 'ราคางานพิเศษ2
        .Offset(0, 36).Value = rg.Offset(19, -5).Value 'สี2
        .Offset(0, 37).Value = rg.Offset(15, 3).Value 'จำนวน1
        .Offset(0, 38).Value = rg.Offset(15, 4).Value 'ราคา1
        .Offset(0, 39).Value = rg.Offset(17, 3).Value 'จำนวน2
        .Offset(0, 40).Value = rg.Offset(17, 4).Value 'ราคา2
        .Offset(0, 41).Value = rg.Offset(19, 3).Value 'จำนวน3
        .Offset(0, 42).Value = rg.Offset(19, 4).Value 'ราคา3
        .Offset(0, 43).Value = rg.Offset(15, 5).Value 'หมายเหตุ2
        .Offset(0, 44).Value = rg.Offset(22, -7).Value 'รายการที่3
        .Offset(0, 45).Value = rg.Offset(22, -5).Value 'รายการ3
        .Offset(0, 46).Value = rg.Offset(22, 0).Value 'ขนาด3
        .Offset(0, 47).Value = rg.Offset(22, 8).Value 'ขนาด3
        .Offset(0, 48).Value = rg.Offset(24, -4).Value 'วัตถุดิบ3
        .Offset(0, 49).Value = rg.Offset(24, 5).Value 'ราคาวัตถุดิบ3
        .Offset(0, 50).Value = rg.Offset(26, -3).Value 'เคลือบ3
        .Offset(0, 51).Value = rg.Offset(27, 3).Value 'เคลือบ3
        .Offset(0, 52).Value = rg.Offset(26, -1).Value 'งานพิเศษ3
        .Offset(0, 53).Value = rg.Offset(27, 5).Value 'ราคางานพิเศษ3
        .Offset(0, 54).Value = rg.Offset(26, -5).Value 'สี3
        .Offset(0, 55).Value = rg.Offset(22, 3).Value 'จำนวน1
        .Offset(0, 56).Value = rg.Offset(22, 4).Value 'ราคา1
        .Offset(0, 57).Value = rg.Offset(24, 3).Value 'จำนวน2
        .Offset(0, 58).Value = rg.Offset(24, 4).Value 'จำนวน2
        .Offset(0, 59).Value = rg.Offset(26, 3).Value 'จำนวน3
        .Offset(0, 60).Value = rg.Offset(26, 4).Value 'ราคา3
        .Offset(0, 61).Value = rg.Offset(22, 5).Value 'หมายเหตุ3
        .Offset(0, 62).Value = rg.Offset(29, -7).Value 'รายการที่4
        .Offset(0, 63).Value = rg.Offset(29, -5).Value 'รายการ4
        .Offset(0, 64).Value = rg.Offset(29, 0).Value 'ขนาด4
        .Offset(0, 65).Value = rg.Offset(29, 8).Value 'ขนาด4
        .Offset(0, 66).Value = rg.Offset(31, -4).Value 'วัตถุดิบ4
        .Offset(0, 67).Value = rg.Offset(31, 5).Value 'ราคาวัตถุดิบ4
        .Offset(0, 68).Value = rg.Offset(33, -3).Value 'เคลือบ4
        .Offset(0, 69).Value = rg.Offset(34, 3).Value 'ราคาเคลือบ4
        .Offset(0, 70).Value = rg.Offset(33, -1).Value 'งานพิเศษ4
        .Offset(0, 71).Value = rg.Offset(34, 5).Value 'ราคางานพิเศษ4
        .Offset(0, 72).Value = rg.Offset(33, -5).Value 'สี4
        .Offset(0, 73).Value = rg.Offset(29, 3).Value 'จำนวน1
        .Offset(0, 74).Value = rg.Offset(29, 4).Value 'ราคา1
        .Offset(0, 75).Value = rg.Offset(31, 3).Value 'จำนวน2
        .Offset(0, 76).Value = rg.Offset(31, 4).Value 'ราคา2
        .Offset(0, 77).Value = rg.Offset(33, 3).Value 'จำนวน3
        .Offset(0, 78).Value = rg.Offset(33, 4).Value 'ราคา3
        .Offset(0, 79).Value = rg.Offset(29, 5).Value 'หมายเหตุ4
        .Offset(0, 80).Value = rg.Offset(36, -7).Value 'รายการที่5
        .Offset(0, 81).Value = rg.Offset(36, -5).Value 'รายการ5
        .Offset(0, 82).Value = rg.Offset(36, 0).Value 'ขนาด5
        .Offset(0, 83).Value = rg.Offset(36, 8).Value 'ขนาด5
        .Offset(0, 84).Value = rg.Offset(38, -4).Value 'วัตถุดิบ5
        .Offset(0, 85).Value = rg.Offset(38, 5).Value 'ราคาวัตถุดิบ5
        .Offset(0, 86).Value = rg.Offset(40, -3).Value 'เคลือบ5
        .Offset(0, 87).Value = rg.Offset(41, 3).Value 'ราคาเคลือบ5
        .Offset(0, 88).Value = rg.Offset(40, -1).Value 'งานพิเศษ5
        .Offset(0, 89).Value = rg.Offset(41, 5).Value 'ราคางานพิเศษ5
        .Offset(0, 90).Value = rg.Offset(40, -5).Value 'สี5
        .Offset(0, 91).Value = rg.Offset(36, 3).Value 'จำนวน1
        .Offset(0, 92).Value = rg.Offset(36, 4).Value 'ราคา1
        .Offset(0, 93).Value = rg.Offset(38, 3).Value 'จำนวน2
        .Offset(0, 94).Value = rg.Offset(38, 4).Value 'ราคา2
        .Offset(0, 95).Value = rg.Offset(40, 3).Value 'จำนวน3
        .Offset(0, 96).Value = rg.Offset(40, 4).Value 'ราคา3
        .Offset(0, 97).Value = rg.Offset(36, 5).Value 'หมายเหตุ5
        End With
    End With
    Range("n12,N14,N16,N19,N21,n23,n26,n28,n30,n33,n35,n37,n40,n42,n44").ClearContents
    Sheets("DATA1").Select
    ActiveWorkbook.Worksheets("DATA1").sort.SortFields.Clear
    ActiveWorkbook.Worksheets("DATA1").sort.SortFields.Add Key:=Range("A4"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("DATA1").sort
        .SetRange Range("A4:CT5")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Sheets("ออกใบเสนอราคางาน").Select
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#2

Post by snasui »

:D ลองปรับบางส่วนของ Code เป็นตามด้านล่างครับ

Code: Select all

...
With ActiveWorkbook.Worksheets("DATA1").sort
     .SetRange Range("A4", Range("CT" & Rows.count).End(xlUp))
     .Header = xlNo
     .MatchCase = False
     .Orientation = xlTopToBottom
     .SortMethod = xlPinYin
     .Apply
End With
...
ควรแนบตัวอย่างไฟล์มาด้วยจะได้เห็นว่าข้อมูลเป็นอย่างไร เพื่อจะได้ตอบได้ตรงประเด็นมากกว่าอ่านจาก Code แต่เพียงอย่างเดียวครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#3

Post by sakajohn »

ผมส่งไฟล์มาเพิ่มเติมแล้วครับ ตอนนี้ปัญหาคือ เวลากดบันทึกมันจะไปเรียงอยู่เหนือแถวที่กำหนดเป็นหัวข้อเรื่องครับ
อยู่ใน Procedure "แก้ไขราคา" ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#4

Post by snasui »

:D ลองปรับ Code เป็นด้านล่างครับ โดยเครื่องหมาย ... คือ Code อื่นที่ไม่ต้องปรับ

Code: Select all

...
Dim rSort As Range
Dim sortField As Range
...
Set rSort = Sheets("DATA1").Range("a1").CurrentRegion
Set sortField = rSort.Offset(1, 0).Resize(, 1)
ActiveWorkbook.Worksheets("DATA1").sort.SortFields.Clear
ActiveWorkbook.Worksheets("DATA1").sort.SortFields.Add Key:=sortField, _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("DATA1").sort
    .SetRange rSort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
...
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#5

Post by sakajohn »

ผมได้ลองแก้ไขโค๊ตตามที่อาจารย์แนะนำครับ แต่มันก็ยังไม่เรียงลำดับครับ ผมไม่แน่ใจว่าวางโค๊ตผิดตำแหน่งหรือเปล่าครับ ขอให้อาจารย์ช่วยแนะนำอีกครั้งครับ ขอบคุณครับ

Code: Select all

Private Sub cmdEdite_Click()

If Application.CountA(Range("N12")) = 0 Then
        MsgBox "¡ÃسÒãÊèÃÒ¤Ò"
    Exit Sub
End If

Dim rSort As Range
Dim sortField As Range

Dim rg As Range

Set rg = Range("i4")

rg.Activate
If rg.Value = "" Then Exit Sub
If IsDuplicate(rg.Value) Then
    MsgBox "¢éÍÁÙÅ«éÓàÃÕ¡ËÑÇ˹éÒá¡éä¢", vbCritical
    Exit Sub
End If

With Worksheets("DATA1")
    With .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
      .Offset(0, 0).Value = rg.Offset(0, 0).Value 'àÅ¢·ÕèàÍ¡ÊÒÃ
        .Offset(0, 1).Value = rg.Offset(0, 5).Value 'Çѹ·Õè
        .Offset(0, 2).Value = rg.Offset(0, -5).Value 'ª×èͺÃÔÉÑ·
        .Offset(0, 3).Value = rg.Offset(2, -5).Value 'ª×èͼÙéµÔ´µèÍ
        .Offset(0, 4).Value = rg.Offset(4, -5).Value 'àºÍÃìâ·ÃÅÙ¡¤éÒ
        .Offset(0, 5).Value = rg.Offset(2, 0).Value 'ª×èͽèÒ¢ÒÂ
        .Offset(0, 6).Value = rg.Offset(4, 0).Value 'àºÍÃìâ·Ã½èÒ¢ÒÂ
        .Offset(0, 7).Value = rg.Offset(2, 5).Value 'REV
        .Offset(0, 8).Value = rg.Offset(8, -7).Value 'ÃÒ¡Ò÷Õè
        .Offset(0, 9).Value = rg.Offset(8, -5).Value 'ÃÒ¡ÒÃ
        .Offset(0, 10).Value = rg.Offset(8, 0).Value '¢¹Ò´
        .Offset(0, 11).Value = rg.Offset(8, 1).Value '¢¹Ò´
        .Offset(0, 12).Value = rg.Offset(10, -4).Value 'Çѵ¶Ø´Ôº
        .Offset(0, 13).Value = rg.Offset(10, 5).Value 'ÃÒ¤ÒÇѵ¶Ø´Ôº
        .Offset(0, 14).Value = rg.Offset(12, -3).Value 'à¤Å×ͺ
        .Offset(0, 15).Value = rg.Offset(13, 3).Value 'ÃÒ¤Òà¤Å×ͺ
        .Offset(0, 16).Value = rg.Offset(12, -1).Value '§Ò¹¾ÔàÈÉ
        .Offset(0, 17).Value = rg.Offset(13, 5).Value 'ÃÒ¤Ò§Ò¹¾ÔàÈÉ
        .Offset(0, 18).Value = rg.Offset(12, -5).Value 'ÊÕ
        .Offset(0, 19).Value = rg.Offset(8, 3).Value '¨Ó¹Ç¹1
        .Offset(0, 20).Value = rg.Offset(8, 4).Value 'ÃÒ¤Ò1
        .Offset(0, 21).Value = rg.Offset(10, 3).Value '¨Ó¹Ç¹2
        .Offset(0, 22).Value = rg.Offset(10, 4).Value 'ÃÒ¤Ò2
        .Offset(0, 23).Value = rg.Offset(12, 3).Value '¨Ó¹Ç¹3
        .Offset(0, 24).Value = rg.Offset(12, 4).Value 'ÃÒ¤Ò3
        .Offset(0, 25).Value = rg.Offset(8, 5).Value 'ËÁÒÂà˵Ø1
        .Offset(0, 26).Value = rg.Offset(15, -7).Value 'ÃÒ¡Ò÷Õè2
        .Offset(0, 27).Value = rg.Offset(15, -5).Value 'ÃÒ¡ÒÃ2
        .Offset(0, 28).Value = rg.Offset(15, 0).Value '¢¹Ò´2
        .Offset(0, 29).Value = rg.Offset(15, 2).Value '¢¹Ò´2
        .Offset(0, 30).Value = rg.Offset(17, -4).Value 'Çѵ¶Ø´Ôº2
        .Offset(0, 31).Value = rg.Offset(17, 5).Value 'ÃÒ¤ÒÇѵ¶Ø´Ôº2
        .Offset(0, 32).Value = rg.Offset(19, -3).Value 'à¤Å×ͺ2
        .Offset(0, 33).Value = rg.Offset(20, 3).Value 'ÃÒ¤Òà¤Å×ͺ2
        .Offset(0, 34).Value = rg.Offset(19, -1).Value '§Ò¹¾ÔàÈÉ2
        .Offset(0, 35).Value = rg.Offset(20, 5).Value 'ÃÒ¤Ò§Ò¹¾ÔàÈÉ2
        .Offset(0, 36).Value = rg.Offset(19, -5).Value 'ÊÕ2
        .Offset(0, 37).Value = rg.Offset(15, 3).Value '¨Ó¹Ç¹1
        .Offset(0, 38).Value = rg.Offset(15, 4).Value 'ÃÒ¤Ò1
        .Offset(0, 39).Value = rg.Offset(17, 3).Value '¨Ó¹Ç¹2
        .Offset(0, 40).Value = rg.Offset(17, 4).Value 'ÃÒ¤Ò2
        .Offset(0, 41).Value = rg.Offset(19, 3).Value '¨Ó¹Ç¹3
        .Offset(0, 42).Value = rg.Offset(19, 4).Value 'ÃÒ¤Ò3
        .Offset(0, 43).Value = rg.Offset(15, 5).Value 'ËÁÒÂà˵Ø2
        .Offset(0, 44).Value = rg.Offset(22, -7).Value 'ÃÒ¡Ò÷Õè3
        .Offset(0, 45).Value = rg.Offset(22, -5).Value 'ÃÒ¡ÒÃ3
        .Offset(0, 46).Value = rg.Offset(22, 0).Value '¢¹Ò´3
        .Offset(0, 47).Value = rg.Offset(22, 8).Value '¢¹Ò´3
        .Offset(0, 48).Value = rg.Offset(24, -4).Value 'Çѵ¶Ø´Ôº3
        .Offset(0, 49).Value = rg.Offset(24, 5).Value 'ÃÒ¤ÒÇѵ¶Ø´Ôº3
        .Offset(0, 50).Value = rg.Offset(26, -3).Value 'à¤Å×ͺ3
        .Offset(0, 51).Value = rg.Offset(27, 3).Value 'à¤Å×ͺ3
        .Offset(0, 52).Value = rg.Offset(26, -1).Value '§Ò¹¾ÔàÈÉ3
        .Offset(0, 53).Value = rg.Offset(27, 5).Value 'ÃÒ¤Ò§Ò¹¾ÔàÈÉ3
        .Offset(0, 54).Value = rg.Offset(26, -5).Value 'ÊÕ3
        .Offset(0, 55).Value = rg.Offset(22, 3).Value '¨Ó¹Ç¹1
        .Offset(0, 56).Value = rg.Offset(22, 4).Value 'ÃÒ¤Ò1
        .Offset(0, 57).Value = rg.Offset(24, 3).Value '¨Ó¹Ç¹2
        .Offset(0, 58).Value = rg.Offset(24, 4).Value '¨Ó¹Ç¹2
        .Offset(0, 59).Value = rg.Offset(26, 3).Value '¨Ó¹Ç¹3
        .Offset(0, 60).Value = rg.Offset(26, 4).Value 'ÃÒ¤Ò3
        .Offset(0, 61).Value = rg.Offset(22, 5).Value 'ËÁÒÂà˵Ø3
        .Offset(0, 62).Value = rg.Offset(29, -7).Value 'ÃÒ¡Ò÷Õè4
        .Offset(0, 63).Value = rg.Offset(29, -5).Value 'ÃÒ¡ÒÃ4
        .Offset(0, 64).Value = rg.Offset(29, 0).Value '¢¹Ò´4
        .Offset(0, 65).Value = rg.Offset(29, 8).Value '¢¹Ò´4
        .Offset(0, 66).Value = rg.Offset(31, -4).Value 'Çѵ¶Ø´Ôº4
        .Offset(0, 67).Value = rg.Offset(31, 5).Value 'ÃÒ¤ÒÇѵ¶Ø´Ôº4
        .Offset(0, 68).Value = rg.Offset(33, -3).Value 'à¤Å×ͺ4
        .Offset(0, 69).Value = rg.Offset(34, 3).Value 'ÃÒ¤Òà¤Å×ͺ4
        .Offset(0, 70).Value = rg.Offset(33, -1).Value '§Ò¹¾ÔàÈÉ4
        .Offset(0, 71).Value = rg.Offset(34, 5).Value 'ÃÒ¤Ò§Ò¹¾ÔàÈÉ4
        .Offset(0, 72).Value = rg.Offset(33, -5).Value 'ÊÕ4
        .Offset(0, 73).Value = rg.Offset(29, 3).Value '¨Ó¹Ç¹1
        .Offset(0, 74).Value = rg.Offset(29, 4).Value 'ÃÒ¤Ò1
        .Offset(0, 75).Value = rg.Offset(31, 3).Value '¨Ó¹Ç¹2
        .Offset(0, 76).Value = rg.Offset(31, 4).Value 'ÃÒ¤Ò2
        .Offset(0, 77).Value = rg.Offset(33, 3).Value '¨Ó¹Ç¹3
        .Offset(0, 78).Value = rg.Offset(33, 4).Value 'ÃÒ¤Ò3
        .Offset(0, 79).Value = rg.Offset(29, 5).Value 'ËÁÒÂà˵Ø4
        .Offset(0, 80).Value = rg.Offset(36, -7).Value 'ÃÒ¡Ò÷Õè5
        .Offset(0, 81).Value = rg.Offset(36, -5).Value 'ÃÒ¡ÒÃ5
        .Offset(0, 82).Value = rg.Offset(36, 0).Value '¢¹Ò´5
        .Offset(0, 83).Value = rg.Offset(36, 8).Value '¢¹Ò´5
        .Offset(0, 84).Value = rg.Offset(38, -4).Value 'Çѵ¶Ø´Ôº5
        .Offset(0, 85).Value = rg.Offset(38, 5).Value 'ÃÒ¤ÒÇѵ¶Ø´Ôº5
        .Offset(0, 86).Value = rg.Offset(40, -3).Value 'à¤Å×ͺ5
        .Offset(0, 87).Value = rg.Offset(41, 3).Value 'ÃÒ¤Òà¤Å×ͺ5
        .Offset(0, 88).Value = rg.Offset(40, -1).Value '§Ò¹¾ÔàÈÉ5
        .Offset(0, 89).Value = rg.Offset(41, 5).Value 'ÃÒ¤Ò§Ò¹¾ÔàÈÉ5
        .Offset(0, 90).Value = rg.Offset(40, -5).Value 'ÊÕ5
        .Offset(0, 91).Value = rg.Offset(36, 3).Value '¨Ó¹Ç¹1
        .Offset(0, 92).Value = rg.Offset(36, 4).Value 'ÃÒ¤Ò1
        .Offset(0, 93).Value = rg.Offset(38, 3).Value '¨Ó¹Ç¹2
        .Offset(0, 94).Value = rg.Offset(38, 4).Value 'ÃÒ¤Ò2
        .Offset(0, 95).Value = rg.Offset(40, 3).Value '¨Ó¹Ç¹3
        .Offset(0, 96).Value = rg.Offset(40, 4).Value 'ÃÒ¤Ò3
        .Offset(0, 97).Value = rg.Offset(36, 5).Value 'ËÁÒÂà˵Ø5
        End With
    End With
    Range("n12,N14,N16,N19,N21,n23,n26,n28,n30,n33,n35,n37,n40,n42,n44").ClearContents
    Set rSort = Sheets("DATA1").Range("a1").CurrentRegion
    Set sortField = rSort.Offset(1, 0).Resize(, 1)
    ActiveWorkbook.Worksheets("DATA1").sort.SortFields.Clear
    ActiveWorkbook.Worksheets("DATA1").sort.SortFields.Add Key:=sortField, _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("DATA1").sort
        .SetRange rSort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
End With
    Sheets("ÍÍ¡ãºàʹÍÃÒ¤Ò§Ò¹").Select
End Sub

Private Function IsDuplicate(c) As Boolean
Dim rg As Range
Set rg = Worksheets("DaTa1").Range("A:A")
If rg.Find(c, LookIn:=xlValues, Lookat:=xlWhole) Is Nothing Then
    IsDuplicate = False
Else
    IsDuplicate = True
End If
End Function
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#6

Post by snasui »

:D เท่าที่สังเกตบรรทัดนี้หายไป Sheets("DATA1").Select การเขียน Code ตาม Style นี้ต้องเก็บบรรทัดนี้ไว้ครับ

หากยังไม่ได้ช่วยแนบไฟล์ล่าสุดที่ได้ปรับ Code แล้วมาด้วยครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#7

Post by sakajohn »

ยังไม่ได้ครับอาจารย์ ลองปรับแล้วตามไฟล์แนบครับ ผมขออธิบายการทำงานอีกครั้งนะครับ
1.ที่ sheet แก้ไขราคา เราจะเลือกเลขที่เอกสารมาแก้ไข โดยจะต้องใส่ราคา ลงไปในช่องราคา N12 ก่อน จากนั้นกด บันทึกข้อมูล ถ้าข้อมูลซ๊ำก็จะไม่สามารถบันทึกได้
2.ถ้าข้อมูลไม่ซ๊ำ ก็จะบันทึกลงไปใน Sheet DATA1 โดยต้องการให้เลขที่เอกสารทำการเรียงลำดับจากน้อยไปมาก เพื่อความสะดวกในการค้นหาเลขที่เอกสารเพื่อสั่งพิมพ์ ในSheet ออกใบเสนอราคางาน
You do not have the required permissions to view the files attached to this post.
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#8

Post by niwat2811 »

ลองเปลี่ยนตามนี้ดูครับว่าได้ไหม

Code: Select all

Set rSort = Sheets("DATA1").Range("a3").CurrentRegion
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#9

Post by sakajohn »

ได้แล้วครับ ขอบคุณอาจารย์และคุณniwat2811มากครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#10

Post by sakajohn »

รบกวนถามอีกปัญหาครับ ผมลองซ่อน Sheet "แก้ไขราคา" จากนั้นที่ Sheet "กรอกข้อมูล" ผมกดปุ่มแก้ไขราคา มันขึ้น

runtime error 1004 : select method of worksheet class failed ไปดูที่โค๊ต ฟ้องตรง Sheets("แก้ไขราคา").Select เกี่ยวกับที่ผมไปซ่อนsheet ไว้หรือเปล่าครับ แล้วจะแก้ได้ยังไงครับ

Code: Select all

Sub Edit()
'
' Edit Macro
'

'
    Sheets("กรอกข้อมูล").Select
    Sheets("แก้ไขราคา").Visible = True
End Sub
Sub แก้ไขราคา()
'
' แก้ไขราคา Macro
'

'
Sheets("แก้ไขราคา").Select
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#11

Post by snasui »

sakajohn wrote:runtime error 1004 : select method of worksheet class failed ไปดูที่โค๊ต ฟ้องตรง Sheets("แก้ไขราคา").Select เกี่ยวกับที่ผมไปซ่อนsheet ไว้หรือเปล่าครับ แล้วจะแก้ได้ยังไงครับ
:D เกี่ยวโดยตรงครับ การแก้ไขสามารถทำไดัอย่างน้อย 2 วิธีคือใช้ Code ยกเลิกการซ่อนชีทก่อนเมื่อทำงานเสร็จแล้วค่อยซ่อนชีทด้วย Code อีกที

อีกวิธีจะต้องไม่ใช้ Code เพื่อ Select Sheet โดยการประกาศตัวแปรให้กับ Sheet นั้นเอาไว้ก่อนแล้วค่อยวาง Data หรือ Sort ที่ตัวแปรนั้น ลองปรับ Code มาเองก่อน ติดตรงไหนค่อยถามกันต่อ ที่สำคัญ Code ที่ปรับควรมีอยู่จริงในไฟล์แนบครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#12

Post by sakajohn »

ตอนนี้ผมลองปรับโดยใช้ macro มาช่วยครับ ก็แก้ไขได้ครับ สิ่งที่ผมติดอีกอย่างหนึ่งคือ ถ้าต้องการให้มันบันทึกซ๊ำข้อมูลเดิมใน sheet แก้ไขราคา โดยมีข้อแม้ว่า ที่ REV จะต้องไม่ซีำกันถึงจะเพิ่มข้อมูลลงไปได้ ครั้งแรกผมใช้เลขที่เอกสารเป็นตัวกำหนด แต่ถ้ามีการแก้ไขราคาจะต้องเปลี่ยนตรง REv เป็นเลข 1,2,3.. จึงจะสามารถบันทึกข้อมูลซ๊ำลงไปได้ครับ ไม่รู้จะทำอย่างไรครับ

อีกปัญหาที่ผมเจอคือ ผมต้องเอาไฟล์งานไปไว้ที่ เครื่องแม่แล้วให้แต่ละคนสามารถมาดีงไปใช้พร้อมกันและแก้ไขข้อมูลได้พร้อมกันครับ ผมไปกำหนดไฟล์งานให้เป็นแบบ share workbook แล้วครับ แต่ตอนที่เปิดขึ้นมามันจะให้ update เสร็จแล้วจะมีหน้าต่างฟ้องว่า
This Workbook contains one or more link that cannot be update ถ้าเรากด continue ไป เวลาใช้งานสามารถกดปุ่มที่เป็น Macro ได้ แต่ปุ่มที่เขียนด้วยCodeไม่สามารถกดได้ครับ ไม่รู้ต้องทำอย่างไรครับ แต่ถ้าเปิดจากเครื่องที่ทำตั้งแต่ครั้งแรกถึงจะดึงจากเครื่องแม่ก็สามารถกดปุ่มต่างๆ ได้ครบทั้งหมดครับ รบกวนช่วยเสนอแนะด้วยครับ ใกล้จะถึงเวลาต้องใช้งานแล้วครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#13

Post by snasui »

sakajohn wrote:ตอนนี้ผมลองปรับโดยใช้ macro มาช่วยครับ ก็แก้ไขได้ครับ สิ่งที่ผมติดอีกอย่างหนึ่งคือ ถ้าต้องการให้มันบันทึกซ๊ำข้อมูลเดิมใน sheet แก้ไขราคา โดยมีข้อแม้ว่า ที่ REV จะต้องไม่ซีำกันถึงจะเพิ่มข้อมูลลงไปได้ ครั้งแรกผมใช้เลขที่เอกสารเป็นตัวกำหนด แต่ถ้ามีการแก้ไขราคาจะต้องเปลี่ยนตรง REv เป็นเลข 1,2,3.. จึงจะสามารถบันทึกข้อมูลซ๊ำลงไปได้ครับ ไม่รู้จะทำอย่างไรครับ
:D ควรแจ้งว่า Procedure ใด ติดขัดบรรทัดใด จะได้ช่วยดูต่อไปจากนั้นครับ
sakajohn wrote:อีกปัญหาที่ผมเจอคือ ผมต้องเอาไฟล์งานไปไว้ที่ เครื่องแม่แล้วให้แต่ละคนสามารถมาดีงไปใช้พร้อมกันและแก้ไขข้อมูลได้พร้อมกันครับ ผมไปกำหนดไฟล์งานให้เป็นแบบ share workbook แล้วครับ แต่ตอนที่เปิดขึ้นมามันจะให้ update เสร็จแล้วจะมีหน้าต่างฟ้องว่า
This Workbook contains one or more link that cannot be update ถ้าเรากด continue ไป เวลาใช้งานสามารถกดปุ่มที่เป็น Macro ได้ แต่ปุ่มที่เขียนด้วยCodeไม่สามารถกดได้ครับ ไม่รู้ต้องทำอย่างไรครับ แต่ถ้าเปิดจากเครื่องที่ทำตั้งแต่ครั้งแรกถึงจะดึงจากเครื่องแม่ก็สามารถกดปุ่มต่างๆ ได้ครบทั้งหมดครับ รบกวนช่วยเสนอแนะด้วยครับ ใกล้จะถึงเวลาต้องใช้งานแล้วครับ
การ Share ไฟล์ไม่ Support การใช้งาน VBA ครับ ควรออกแบบไฟล์โปรแกรมแยกออกมาต่างหากจากข้อมูลที่ใช้ร่วมกันในลักษณะของ Share File ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#14

Post by sakajohn »

ที่ Procedure "แก้ไขราคา"ครับ ตอนนี้ ใช้ Code คือ

Code: Select all

Dim rg As Range

Set rg = Range("i4")

rg.Activate
If rg.Value = "" Then Exit Sub
If IsDuplicate(rg.Value) Then
    MsgBox "ข้อมูลซ๊ำเรียกหัวหน้าแก้ไข", vbCritical
    Exit Sub
เรากำหนดให้ดูค่าที่ช่อง i4 ต้องไม่ซ๊ำกัน ถ้าผมต้องการเพิ่มเงื่อนไขโดย ที่ช่อง i4 จะต้องมีรหัสไม่ซ๊ำกันและที่ช่อง O6 ต้องเป็นค่าว่าง ถึงจะแจ้งว่ารหัสซ๊ำกันกันครับ
แต่ถ้าช่อง O6 มีค่ามากกว่า 0 ให้บันทึกข้อมูลซ๊ำลงไปตำแหน่งเดิมครับ ผมจะต้องเขียนยังไงครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#15

Post by snasui »

:D ให้เพิ่มเงื่อนไขการตรวจสอบที่เขียนมาทั้งหมดลงมาก่อน ติดแล้วค่อยถามกันครับ

กรณีเข้าเงื่อนไขพร้อมกันหลายเงื่อนไข ให้ใช้ And เข้ามาช่วย กรณีเข้าเพียงเงื่อนไขใดเพียงเงื่อนไขเดียวจากเงื่อนไขทั้งหมดให้ใช้ Or เข้ามาช่วยครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#16

Post by sakajohn »

อาจารย์ครับพอดีผมไม่มีความรู้ในการใช้ or and ครับ ผมเลยหาวิธีใหม่โดยการสร้าง sheet "Edit Price" ขึ้นมาใหม่ครับ จากนั้นใช้วิธีดึงข้อมูลจากsheet DATA1 มาเพื่อทำการแก้ไข แล้วให้บันทึกกลับไปใน Sheet DATA1 ผมต้องการให้สามารถแก้ไขรายละเอียด ใน Sheet "Edit Price" ได้ทั้งหมด ยกเว้นเลขที่เอกสารกับวันที่ โดยมีข้อแม้ว่าจะต้องใส่ ตัวเลข ที่มากกว่า ศูนย์ ในช่อง O6 ถึงจะยอมให้บันทึกค่าได้ครับ

ตอนนี้ที่ทำได้งูๆปลาๆ ครับ คือให้แก้ได้เฉพาะ ช่องราคาอย่างเดียวครับ หมดหนทางครับ Procedure EDIT PRICE ครับ
You do not have the required permissions to view the files attached to this post.
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#17

Post by sakajohn »

ขอถามเพิ่มอีกคำถามครับ ถ้าผมต้องการให้เวลาอยู่ที่ Sheet ไหนก็แล้วแต่ จะไม่สามารถปิดโปรแกรม excel ได้ จะต้องกลับมาที่ Sheet1 ก่อนทุกครั้ง ถึงจะปิดโปรแกรมได้ครับ หรือถ้าปิดโปรแกรมเมื่อไหรจะต้องกลับไปที่sheet1ทุกครั้ง
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#18

Post by snasui »

sakajohn wrote:ถ้าผมต้องการเพิ่มเงื่อนไขโดย ที่ช่อง i4 จะต้องมีรหัสไม่ซ๊ำกันและที่ช่อง O6 ต้องเป็นค่าว่าง ถึงจะแจ้งว่ารหัสซ๊ำกันกันครับ
แต่ถ้าช่อง O6 มีค่ามากกว่า 0 ให้บันทึกข้อมูลซ๊ำลงไปตำแหน่งเดิมครับ ผมจะต้องเขียนยังไงครับ
:D ตัวอย่าง Code สำหรับตรวจสอบสองเงื่อนไขตามด้านล่างครับ

Code: Select all

If IsDuplicate(rg.Value) And Range("o6") = "" Then
    MsgBox "ข้อมูลซ้ำเรียกหัวหน้าแก้ไข", vbCritical
    Exit Sub
End If
สำหรับการบันทึกตำแหน่งเดิมก็ต้องตรวจสอบก่อนว่าตำแหน่งเดิมเป็นบรรทัดใด ก็ค่อยเขียน Code ให้บันทึกลงบรรทัดนั้นครับ
sakajohn wrote:ขอถามเพิ่มอีกคำถามครับ ถ้าผมต้องการให้เวลาอยู่ที่ Sheet ไหนก็แล้วแต่ จะไม่สามารถปิดโปรแกรม excel ได้ จะต้องกลับมาที่ Sheet1 ก่อนทุกครั้ง ถึงจะปิดโปรแกรมได้ครับ หรือถ้าปิดโปรแกรมเมื่อไหรจะต้องกลับไปที่sheet1ทุกครั้ง
ไปที่ ThisWorkbook แล้วลองเพิ่ม Code ตามด้านล่างครับ

Code: Select all

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets("Sheet1").Select
    ThisWorkbook.Save
End Sub
อย่าลืมปรับชื่อชีทให้เป็นชื่อชีทที่จะใช้จริง
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#19

Post by sakajohn »

จากสูตรที่อาจารย์ให้มา เรื่องการปิดโปรแกรม Excel ผมลองใช้แล้วติดปัญหาตรงที่ว่า Sheet1 ถูกซ่อนอยู่ครับ ผมเลยลองปรับ code ดูครับ

Code: Select all

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets("Edit price").Select
    Sheets("Sheet1").Visible = True
    Sheets("Edit price").Select
    ActiveWindow.SelectedSheets.Visible = False
    ThisWorkbook.Save
End Sub
คือถ้าผมอยู่ที่ Sheet Edit price เมื่อกดปิดโปรแกรม Excel มันก็จะไปเปิด Sheet1 ก่อน แล้วซ่อน Sheet Edit price แล้วถึง Save แต่ถ้าอยู่Sheet อื่น จะต้องทำอย่างไรครับอาจารย์
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำยังไงให้ข้อมูลที่บันทึกลงอีกชีท เรียงข้อมูลจากน้อยไปมา

#20

Post by snasui »

:D ตัวอย่าง Code ตามด้านล่าง ซึ่งเป็นการซ่อนทุกชีทก่อนปิดไฟล์ยกเว้น Sheet1 ครับ

Code: Select all

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim sh As Worksheet
    Sheets("Sheet1").Visible = True
    For Each sh In Worksheets
        If sh.Name <> "Sheet1" Then
            sh.Visible = False
        End If
    Next sh
    ThisWorkbook.Save
End Sub
Post Reply