: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

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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

Re: VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

#9

by snasui » Tue Apr 26, 2016 6:24 pm

:D Code เดิมเป็นการเขียนให้นำชีตที่กำลัง Active มาใช้ ส่วนตัวอย่าง Code ที่ผมให้ไปนั้นเป็นการเขียนให้นำชีตที่อยู่ลำดับถัดไปจากชีต "รายการแจ้งซ่อม" ซึ่งจะตรงกับความต้องการครับ

Re: VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

#8

by Botman03 » Tue Apr 26, 2016 9:55 am

snasui wrote::D Code นั้นต้องการจะทำอะไรช่วยอธิบายและลำดับขั้นตอนมาด้วยจะได้เข้าใจตรงกันครับ

ด้านล่างนี้ผมเดาว่าต้องการนำ Form เปล่ามาแสดง หากผมเข้าใจถูกต้องสามารถปรับ Code เป็นตามด้านล่างครับ

Code: Select all

' ปุ่มล้างข้อมูล
Sheets(Sheets("รายการแจ้งซ่อม").Index + 1).Select
ActiveSheet.Copy after:=Sheets(1)
ActiveSheet.Name = "เอกสารแจ้งซ่อม"
Range("F5:H5").Select
Selection.ClearContents
Range("K5:L5").Select
Selection.ClearContents
Range("W2:X2").Select
Selection.ClearContents
Range("C10:T19").Select
Selection.ClearContents
Range("C30:I30").Select
Selection.ClearContents
Range("AC15").Select
Selection.ClearContents
ActiveSheet.CheckBoxes.Value = xlOff 
ถูกต้องครับ ต้องการสร้างฟอร์มเปล่าขึ้นมาเพิ่ม ผมรบกวนสอบถามการทำงานของ Code Sheets(Sheets("รายการแจ้งซ่อม").Index + 1).Select เพื่อเป็นข้อมูลได้มั้ยครับ ทำไมCode เก่าถึงใช้ไม่ได้ ขอบคุณมากครับ เอกสารเสร็จครบแล้ว :)

Re: VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

#7

by snasui » Mon Apr 25, 2016 6:19 pm

:D Code นั้นต้องการจะทำอะไรช่วยอธิบายและลำดับขั้นตอนมาด้วยจะได้เข้าใจตรงกันครับ

ด้านล่างนี้ผมเดาว่าต้องการนำ Form เปล่ามาแสดง หากผมเข้าใจถูกต้องสามารถปรับ Code เป็นตามด้านล่างครับ

Code: Select all

' ปุ่มล้างข้อมูล
Sheets(Sheets("รายการแจ้งซ่อม").Index + 1).Select
ActiveSheet.Copy after:=Sheets(1)
ActiveSheet.Name = "เอกสารแจ้งซ่อม"
Range("F5:H5").Select
Selection.ClearContents
Range("K5:L5").Select
Selection.ClearContents
Range("W2:X2").Select
Selection.ClearContents
Range("C10:T19").Select
Selection.ClearContents
Range("C30:I30").Select
Selection.ClearContents
Range("AC15").Select
Selection.ClearContents
ActiveSheet.CheckBoxes.Value = xlOff 

Re: VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

#6

by Botman03 » Mon Apr 25, 2016 4:41 pm

snasui wrote::D ตัวอย่าง Code ครับ

ที่เซลล์ AK2 คีย์สูตรเพื่อนับว่ามีรายการที่จะบันทึกอยู่ในฐานข้อมูลแล้วหรือไม่ตามสูตรด้านล่าง

=COUNTIFS(รายการแจ้งซ่อม!A5:A10000,AL2,รายการแจ้งซ่อม!B5:B10000,AM2,รายการแจ้งซ่อม!D5:D10000,AO2)

Enter

จากนั้นปรับ Code เป็น

Code: Select all

Sub Sendata()
    If Range("ak2").Value = 0 Then
        Range("AL2,AM2,AN2,AO2,AP2,AQ2,AR2,AS2,AT2").Copy
        Sheets("ÃÒ¡ÒÃá¨é§«èÍÁ").Select
        Range("a1048576").End(xlUp).Offset(1, 0).Select
        Selection.PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
End Sub
กรณีทำด้วย VBA สามารถทำได้ทุกงานและแสดงผลได้ทุกที่ตามต้องการ ความเสถียรอยู่ที่การเขียน Code เป็นหลัก ไม่ได้อยู่ที่วิธีหรือตำแหน่งการแสดงผลเป็นหลักครับ
มีปัญหาเพิ่มเติมครับ code นั้นทำงานเป็นปกติดีครับ แต่เมื่อผมได้เอา Code ที่ได้มาไปรวมกับ Module Save File แล้วมีปัญหาว่า
จาก Code

Code: Select all

ActiveSheet.Select
ActiveSheet.Copy after:=Sheets(1)
ActiveSheet.Name = "เอกสารแจ้งซ่อม"
Range("F5:H5").Select
Selection.ClearContents
Range("K5:L5").Select
Selection.ClearContents
Range("W2:X2").Select
Selection.ClearContents
Range("C10:T19").Select
Selection.ClearContents
Range("C30:I30").Select
Selection.ClearContents
Range("AC15").Select
Selection.ClearContents
ActiveSheet.CheckBoxes.Value = xlOff 
เมื่อกดปุ่ม Save File แล้ว vba จะสร้างหน้าเปล่าขึ้นมา แทนที่จะก็อปปี้ฟอร์มเดิม ตามไฟล์แนบเลยครับ
Attachments
เอกสารแจ้งซ่อมรถ DC-SR.xlsm
(187.02 KiB) Downloaded 26 times

Re: VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

#5

by Botman03 » Sun Apr 24, 2016 2:34 pm

snasui wrote::D ตัวอย่าง Code ครับ

ที่เซลล์ AK2 คีย์สูตรเพื่อนับว่ามีรายการที่จะบันทึกอยู่ในฐานข้อมูลแล้วหรือไม่ตามสูตรด้านล่าง

=COUNTIFS(รายการแจ้งซ่อม!A5:A10000,AL2,รายการแจ้งซ่อม!B5:B10000,AM2,รายการแจ้งซ่อม!D5:D10000,AO2)

Enter

จากนั้นปรับ Code เป็น

Code: Select all

Sub Sendata()
    If Range("ak2").Value = 0 Then
        Range("AL2,AM2,AN2,AO2,AP2,AQ2,AR2,AS2,AT2").Copy
        Sheets("ÃÒ¡ÒÃá¨é§«èÍÁ").Select
        Range("a1048576").End(xlUp).Offset(1, 0).Select
        Selection.PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
End Sub
กรณีทำด้วย VBA สามารถทำได้ทุกงานและแสดงผลได้ทุกที่ตามต้องการ ความเสถียรอยู่ที่การเขียน Code เป็นหลัก ไม่ได้อยู่ที่วิธีหรือตำแหน่งการแสดงผลเป็นหลักครับ

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

Re: VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

#4

by snasui » Sun Apr 24, 2016 2:19 pm

:D ตัวอย่าง Code ครับ

ที่เซลล์ AK2 คีย์สูตรเพื่อนับว่ามีรายการที่จะบันทึกอยู่ในฐานข้อมูลแล้วหรือไม่ตามสูตรด้านล่าง

=COUNTIFS(รายการแจ้งซ่อม!A5:A10000,AL2,รายการแจ้งซ่อม!B5:B10000,AM2,รายการแจ้งซ่อม!D5:D10000,AO2)

Enter

จากนั้นปรับ Code เป็น

Code: Select all

Sub Sendata()
    If Range("ak2").Value = 0 Then
        Range("AL2,AM2,AN2,AO2,AP2,AQ2,AR2,AS2,AT2").Copy
        Sheets("ÃÒ¡ÒÃá¨é§«èÍÁ").Select
        Range("a1048576").End(xlUp).Offset(1, 0).Select
        Selection.PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
End Sub
กรณีทำด้วย VBA สามารถทำได้ทุกงานและแสดงผลได้ทุกที่ตามต้องการ ความเสถียรอยู่ที่การเขียน Code เป็นหลัก ไม่ได้อยู่ที่วิธีหรือตำแหน่งการแสดงผลเป็นหลักครับ

Re: VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

#3

by Botman03 » Sun Apr 24, 2016 12:59 pm

snasui wrote::D มีวิธีการตรวจสอบอย่างไรว่าซ้ำครับ :?:

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

อันนี้เป็นเอกสารแจ้งซ่อมรถของบริษัทครับ ผมตั้งค่าไว้ให้เซฟไว้เป็นของแต่ละวัน เพราะฉะนั้นวันนึงรถแต่ละคันจะซ่อมได้ครั้งเดียวครับ สิ่งที่ต้องคำนึงถึงน่าจะเป็น ชื่อ และ ทะเบียนครับ

ปล.รบกวนปรึกษาว่า การทำชีทสรุปแบบรายวันภายในชีทเดียวกัน กับ ชีทสรุปรวมทุกวันแยกออกไปแล้วให้vbบันทึกไปยังชีทนั้น อย่างหลังสามารถทำได้มั้ยครับ แล้วแบบไหนจะมีความเสถียรกว่า

Re: VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

#2

by snasui » Sun Apr 24, 2016 12:50 pm

:D มีวิธีการตรวจสอบอย่างไรว่าซ้ำครับ :?:

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

VBA ไม่ให้ใส่ข้อมูลซ้ำในเซล

#1

by Botman03 » Sun Apr 24, 2016 12:35 pm

สวัสดีครับ อยากปรึกษาทุกๆท่าน ผมลองใช้สูตร vba เพื่อค้นหาและบันทึกข้อมูลเอกสารงานแบบอัตโนมัติ ผ่านปุ่ม Save (จะเอาcode send data Module5 ) ไปใส่ทีหลัง ติดปัญหาตรงที่ Sheet "รายการแจ้งซ่อม" (Module5) ผมตั้งสูตรให้ เมื่อกดปุ่ม Commandแล้ว จะก้อปข้อมูลจากเซลที่ตั้งค่าไว้ใน "เอกสารแจ้งซ่อม" ไปเรียงใน >> รายการแจ้งซ่อม ซึ่งเป็นเหมือนหน้าสรุป ถ้าเราทำการกดเซฟในชีทเดิม2ครั้ง มันก็จะทำการบันทึกข้อมูลซ้ำลงไป2บรรทัด อยากทราบว่าต้องทำยังไงให้เซฟข้อมูลแล้ว ข้อมูลที่ซ้ำจะไม่ถูกวางลงไปในหน้าสรุปครับผม
ตัวอย่างตามไฟล์แนบเลยนะครับ
Attachments
เอกสารแจ้งซ่อมรถ DC-SR.xlsm
(188.77 KiB) Downloaded 20 times

Top