: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
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#1

Post by niwat2811 »

รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox คือต้องการให้ Sheet 2 บันทึกข้อมูลจาก Sheet1 ตามข้อมูลที่เรา CheckBox แล้วเรียงข้อมูลต่อกันลงมาเรื่อย
พร้อมทั้งเมื่อกดปุ่ม Clear Checkbox แล้วข้อมูลที่ Sheet 2 ไม่หายไปครับ รบกวนท่านอาจารย์ช่วยชี้แนะด้วยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#2

Post by bank9597 »

:D ยังไม่มีเวลาดูให้เลย แต่เท่าที่ดูนั้น วิธีการดังกล่าวยังไม่ถูกต้องเพราะยังมีการ Count เพื่อให้ข้อมูลลงไปบันทึกต่อๆกันไปครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#3

Post by niwat2811 »

ครับที่ต้องการก็คือ ให้ CheckBox ข้อมูลที่ Sheet1 เมื่อเสร็จ 1 รายแล้วให้ไปเรียงต่อกันที่ Sheet2 ที่แถว Row2 แล้วก็กลับมาที่ Sheet1 แล้วก็ CheckBox ข้อมูลรายต่อไปโดยให้ข้อมูลไปต่อกันที่ Sheet2 แถว Row 3 ไปเรื่อย ๆ ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#4

Post by snasui »

:D ใน Sheet1 ไม่ใช่ CheckBox ครับ เป็น Object ประเภทรูปภาพ ไม่ได้เป็น Form Control หรือ ActiveX Control ที่จะนำไปเขียน Code ตามที่เขียนมาได้

การสร้าง CheckBox ควรเข้าไปที่เมนู Developer > Insert > ในหมวด Form Control เลือก CheckBox แล้วนำมาวาดใน Worksheet ตามตำแหน่งที่ต้องการ ลองแนบไฟล์มาใหม่ครับ
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#5

Post by niwat2811 »

อาจารย์ครับได้ทำการแก้ไขไฟล์มาให้ใหม่แล้วครับ รบกวนช่วยชี้แนะให้ด้วยนะครับ ขอบคุณมากครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#6

Post by snasui »

:D ลองตาม Code ด้านล่างครับ

Code: Select all

Sub SaveData()
    Dim rs As Range, rsAll As Range
    Dim rt As Range, i As Integer
    Set rsAll = Sheets("Sheet1").Range("D2:D10")
    Set rt = Sheets("Sheet2").Range("A" & Rows.Count) _
        .End(xlUp).Offset(1, 0)
    rt = Sheets("Sheet1").Range("A1")
    For Each rs In rsAll
        i = i + 1
        rt.Offset(0, i) = IIf(rs, 1, 0) 'Or rt.offset(0,i) = abs(rs)
    Next rs
End Sub
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#7

Post by niwat2811 »

อาจารย์ครับรบกวนเรียนถามความหมายของ Code นี้หน่อยนะครับ เพื่อความเข้าใจเพิ่มขึ้น ขอบพระคุณมากครับ
For Each rs In rsAll
i = i + 1
rt.Offset(0, i) = IIf(rs, 1, 0) 'Or rt.offset(0,i) = abs(rs)
Next rs
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#8

Post by snasui »

เป็นการวน Loop โดยใช้ For Each Next ครับ ลองทำความเข้าใจตามด้านล่างครับ

จาก Code ที่ถามมาแปลได้ว่า ให้ดูที่ Range rsAll ไปทีละตัว โดยแต่ละตัวที่ว่านี้คือ rs ทุกครั้งที่เข้าถึง rs ก็ให้เพิ่มค่าตัวแปร i ไปทีละ 1 และกำหนดให้ ค่าที่ถัดจากตัวแปร rt ไปด้านขวาตามค่า i หมายถึงจะถัดไปเท่าใดก็ขึ้นอยู่กับค่า i ว่ามีค่าเท่าใด

โดยค่าที่ถัดไปทีว่านั้นให้ค่ามีค่าเท่ากับผลลัพธ์ทีได้จากสูตร Iff(rs,1,0) โดยสูตรนี้หมายความถึง หาก rs มีค่าเป็น True ก็ให้มีค่าเป็น 1 ถ้าเป็น False ก็มีค่าเป็น 0
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#9

Post by niwat2811 »

รู้สึกเหมือนว่า Web มัน RollBack กลับไปครับอาจารย์ อาจารย์ครับจากที่ได้ทดลองนำ Code ไปประยุกต์ใช้ดูแล้ว ผู้ใช้หลายคนบอกว่าทำงานได้เร็วขึ้นมาก แต่ติดปัญหาอีกนิดนึงตรงที่เราไม่สามารถแก้ไขรายชื่อที่คีย์ผิดพลาดไปแล้วได้ เช่น ที่ Sheet2 แถว A2 ลูกค้าชื่อนาย A (ซึ่งจริง ๆ แล้วลูกค้าชื่อนาย K) ถ้าเราต้องการแก้ไขข้อมูลเราก็ไปค้นหาจาก Sheet1 ที่เซลล์ H1 พอค้นหาชื่อนาย A ขึ้นมาแล้วทำการแก้ไขให้เป็นนาย K เสร็จแล้วทำการ Save ปรากฎว่าระบบไม่ยอมไป Save ทับแทนที่นาย A กลับไป Save เพิ่มเป็นชื่อนาย K ในแถวที่ 7 ของ Sheet2 ครับ คือจริง ๆ แล้วอยากให้ไปเซพแทนที่ นาย A ซึ่งเป็นแถวที่ 2 ครับ รบกวนท่านอาจารย์ช่วยชี้แนะปรับ Code ให้ด้วยครับ ขอบพระคุณเป็นอย่างสูงครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#10

Post by snasui »

:D ผมตอบเป็นหลักการให้แล้วกันนะครับ

การทำเช่นนั้นจะต้องหาว่าค่าที่ Search ได้มานั้นอยู่ในลำดับที่เท่าไรของฐานข้อมูล แล้วเก็บค่านั้นไว้เพื่อที่เวลา Edit จะได้กลับไปแก้ที่บรรทัดเดิม ลองปรับปรุง Code มาดูก่อนครับ ผมดูในไฟล์แล้วยังเป็น Code เดิม
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#11

Post by niwat2811 »

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

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#12

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่าง โดยประกาศตัวแปร lng ไว้บนสุดเพื่อใช้กับ Procedure FindData และ Procedure EditData ตามด้านล่างครับ

Code: Select all

Dim lng As Long

Sub SaveData()
    Dim rs As Range, rsAll As Range
    Dim rt As Range, i As Integer
    Dim j As Integer
    Set rsAll = Sheets("Sheet1").Range("D2:D10")
    Set rt = Sheets("Sheet2").Range("A" & Rows.Count) _
        .End(xlUp).Offset(1, 0)
    If Application.CountIf(Sheets("Sheet2").Range("A:A"), Sheets("Sheet1").Range("A1")) > 0 Then
        j = MsgBox("คุณกำลังบันทึกข้อมูลซ้ำ คุณต้องการแก้ไขข้อมูลใช่หรือไม่?", vbYesNo)
        If j = vbYes Then
            Call EditData
            Exit Sub
        Else
            Exit Sub
        End If
    End If
    rt = Sheets("Sheet1").Range("A1")
    For Each rs In rsAll
        i = i + 1
        rt.Offset(0, i) = IIf(rs, 1, 0)
    Next rs
    MsgBox "บันทึกข้อมูลเรียบร้อยแล้ว"
End Sub

Sub ClearCheckbox()
    Range("A1,D:D,H1").ClearContents
End Sub

Sub FindData()
    Dim lCount As Long
    Dim rsSearch As Range, r As Range
    Dim rt As Range, rs As Range
    With Sheets("Sheet1")
        Set rsSearch = .Range("H1")
        Set rs = .Range("D2:D10")
    End With
    lCount = Application.CountIf( _
        Sheets("Sheet2").Range("A:A"), rsSearch)
    If lCount > 0 Then
        With Sheets("Sheet2")
        lng = Application.Match(rsSearch, _
            Sheets("Sheet2").Range("A:A"), 0)
        End With
    Else
        MsgBox "Can't find your data."
        Exit Sub
    End If
    Set rt = Sheets("Sheet2").Range("B" & lng).Resize(1, 9)
    rt.Copy
    Sheets("Sheet1").Range("D2").PasteSpecial xlPasteValues, _
        Transpose:=True
    Sheets("Sheet1").Range("A1") = rt.End(xlToLeft)
    For Each r In rs
        r = IIf(r = 1, True, False)
    Next r
    Application.CutCopyMode = False
End Sub
Sub EditData()
    Dim rs As Range, rsAll As Range
    Dim rt As Range, i As Integer
    Set rsAll = Sheets("Sheet1").Range("D2:D10")
    Set rt = Sheets("Sheet2").Range("A" & lng)
    rt = Sheets("Sheet1").Range("A1")
    For Each rs In rsAll
        i = i + 1
        rt.Offset(0, i) = IIf(rs, 1, 0)
    Next rs
    Range("A1,H1").ClearContents
    MsgBox "แก้ไขข้อมูลเรียบร้อยแล้ว"
End Sub
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#13

Post by niwat2811 »

อาจารย์ครับลองนำ Code ด้านบนไปวางทับ Code ทั้งหมดแล้วครับ ผลปรากฎว่าไปบันทึกเพิ่มที่ Sheet 2 แถวสุดท้าย ซึ่งจริง ๆ แล้วต้องการให้บันทึกแทนแถวที่เราค้นหาครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#14

Post by snasui »

:? มีวิธีการทำงานอย่างไรถึงบันทึกแถวสุดท้ายครับ ปกติการจะแก้ไขต้อง Search ขึ้นมาก่อนหรือไม่ครับ

สำหรับ Code ที่ปรับให้ไป จะมีการ Search ขึ้นมาก่อน โปรแกรมจะเก็บค่าบรรทัดของข้อมูลไว้ และเมื่อคลิก Edit ก็จะเก็บลงไปยังบรรทัดเดิม

ช่วยเขียนอธิบายลำดับขั้นตอนของการการทำงาน และระบุว่าเกิดปัญหาในขั้นตอนใดด้วยทุกครั้งเพื่อจะได้ปรับปรุงหรือแนะนำได้ถูกต้องครับ
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#15

Post by niwat2811 »

ครับ ผมต้องขอโทษท่านอาจารย์ด้วยครับที่ไม่ได้ทดสอบให้เรียบร้อยก่อน ขั้นตอนเมื่อก่อนหน้านี้ผมทำการแก้ไขแล้วไปกดปุ่ม Save แทนที่จะกดปุ่ม Edit ต้องขอโทษท่านอาจารย์และขอบพระคุณเป็นอย่างสูงที่ช่วยชี้แนะครับ ขอบคุณมากครับ
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#16

Post by niwat2811 »

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

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#17

Post by snasui »

:D ตรง Sub FindData() ให้ลบ Dim lng as Long ออกไปครับ เนื่องจากประกาศไว้บนสุดแล้ว จากนั้นลอง Run Code ใหม่ดูอีกรอบ สังเกต Code ที่ผมเขียนไปให้ในความเห็นก่อนนี้จะเห็นว่าผมลบออกให้แล้ว
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: รบกวนเรื่องการบันทึกข้อมูลและการ Clear Checkbox

#18

Post by niwat2811 »

ครับ ทำตามคำแนะนำแล้วปรากฎว่า สำเร็จได้ด้วยดีทุกขั้นตอน ขอบคุณสำหรับคำแนะนำต่าง ๆ ที่กรุณาตอบให้ ขอบพระคุณเป็นอย่างสูงเลยครับ
Post Reply