: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

code vba ตรวจสอบข้อมูลไม่ทำงาน

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
tutape
Member
Member
Posts: 85
Joined: Tue Oct 02, 2012 12:59 pm

code vba ตรวจสอบข้อมูลไม่ทำงาน

#1

Post by tutape »

เมื่อคีย์ข้อมูลใน form ช่องเลขที่บัญชี ค่าจะมาปรากฎใน sheet db_bank cell I2 และให้ตรวจสอบว่า มีเลขนี้แล้วยัง โดยเช็คจากคอลัมน์ A ถ้ามีแล้วให้ขึ้นกล่องโต้ตอบว่า "เลขซ้ำ" ถ้าไม่ซ้ำให้บันทึกได้ซึ่งผมลองเขียน code แล้ว พอรันแมโคร code ที่เขียนไม่ทำงานครับ
ซึ่งที่ผมลองเขียนดูเป็นดังนี้ครับ

Code: Select all

Private Sub cmdSave_click_Click()
Dim Lastrow As Integer
Sheets("db_bank").Select
    If Range("i1") = "" Then Exit Sub
    If Not Sheets("db_bank").Columns("A:A").Find(Range("i1"), LookIn:=xlValues) Is Nothing Then
            MsgBox "มีรหัสนี้แล้ว   ไม่สามารถบันทึกได้"
    Else
        Lastrow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Cells(1 + Lastrow, 1).Offset(0, 0).Value = Account_number.Value
        Cells(1 + Lastrow, 1).Offset(0, 1).Value = Account_Name.Value
        Cells(1 + Lastrow, 1).Offset(0, 2).Value = name_fark.Value
        Cells(1 + Lastrow, 1).Offset(0, 3).Value = tel.Value
        Cells(1 + Lastrow, 1).Offset(0, 4).Value = tel_home.Value
        Cells(1 + Lastrow, 1).Offset(0, 5).Value = bank_name.Value
        End If
        If Answer = vbYes Then
            MyNote = "ระบบบันทึกข้อมูลเรียบร้อยแล้ว"
            Answer = MsgBox(MyNote, vbQuestion, "บันทึกข้อมูล")
            Account_Name.Value = ""
        Account_number.Value = ""
        name_fark.Value = ""
        tel.Value = ""
        tel_home.Value = ""
        bank_name.Value = ""
        End If
        Sheets("title").Select
        Range("c4").Select
End Sub
ดังไฟล์ที่แนบครับ

รบกวนคนช่วยแนะนำด้วยครับ
ขอบคุณครับ
Attachments
ทดลองทำ 2.xlsm
(138 KiB) Downloaded 20 times
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: code vba ตรวจสอบข้อมูลไม่ทำงาน

#2

Post by snasui »

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

Code: Select all

Private Sub Account_Name_Change()
    Sheets("db_bank").Range("i2").Value = Account_Name.Text
End Sub

'Private Sub Account_number_Change()
'     Sheets("db_bank").Range("I1").Value = Account_number.Value
'End Sub
tutape
Member
Member
Posts: 85
Joined: Tue Oct 02, 2012 12:59 pm

Re: code vba ตรวจสอบข้อมูลไม่ทำงาน

#3

Post by tutape »

ทำได้แล้วครับ
แต่มีปัญหาต่งตรงที่ว่า เมื่อมี MsgBox ฟ้องว่า "มีรหัสนี้แล้ว ไม่สามารถบันทึกได้"
แต่เมื่อไปดูใน sheet จะทำเป็นฐานข้อมูล คือ db_bank ปรากฎว่ามีข้อมูลใหม่ บันทึกไปแล้วด้วย ทั้งๆ ที่ MsgBox ฟ้องว่า "มีรหัสนี้แล้ว ไม่สามารถบันทึกได้" ผมต้องปรับ code ตรงไหนหรือต้องเพิ่ม code อย่างไรครับ
ขอบคุณครับ
Last edited by tutape on Mon Feb 10, 2014 10:08 pm, edited 1 time in total.
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: code vba ตรวจสอบข้อมูลไม่ทำงาน

#4

Post by snasui »

:D หา Account_number_Change ใน Code ที่เขียนมาให้เจอครับ

จะเห็นว่าที่ผมโพสต์ไปด้านบนได้ Mark เป็น Comment และใช้ Code ชุดบนแทน
tutape
Member
Member
Posts: 85
Joined: Tue Oct 02, 2012 12:59 pm

Re: code vba ตรวจสอบข้อมูลไม่ทำงาน

#5

Post by tutape »

ขอโทษครับ ผมยังหาไม่เจอเลย
และพยายามแกะการทำงานของ code แล้ว ก็ยังไม่ได้เลยครับ
รบกวนขอคำชี้แนะอีกครั้งครับ :P
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: code vba ตรวจสอบข้อมูลไม่ทำงาน

#6

Post by snasui »

:shock: Code อยู่ใน UserForm ที่ชื่อ New_Data_Form ครับ
tutape
Member
Member
Posts: 85
Joined: Tue Oct 02, 2012 12:59 pm

Re: code vba ตรวจสอบข้อมูลไม่ทำงาน

#7

Post by tutape »

ได้แล้วครับ :cp:
แต่ยังไม่ได้ตามที่ตั้งใจไว้
คือ เมื่อมี MsgBox ฟ้องว่า "มีรหัสนี้แล้ว ไม่สามารถบันทึกได้" แล้วให้แก้ไขข้อมูลในช่อง เลขที่บัญชีใหม่ เมื่อแก้แล้วจะให้บันทึกข้อมูลให้เรียบร้อย
ผมยังปรับ code ไม่ได้ มันจะต้องเขียนเพิ่ม หรือใช้คำสั่งอื่นมาช่วย
รบกวนชี้แนะด้วยนะครับ โดย code ที่ผมปรับใหม่ คือ

Code: Select all

Private Sub cmdSave_click_Click()
Sheets("db_bank").Select
Sheets("db_bank").Range("I1").Value = Account_number.Value
Dim Lastrow As Integer
        If Range("i1") = "" Then Exit Sub
    If Not Sheets("db_bank").Columns("A:A").Find(Range("i1"), LookIn:=xlValues) Is Nothing Then
            MsgBox "มีรหัสนี้แล้ว   ไม่สามารถบันทึกได้"
    Else
        Lastrow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Cells(1 + Lastrow, 1).Offset(0, 0).Value = Account_number.Value
        Cells(1 + Lastrow, 1).Offset(0, 1).Value = Account_Name.Value
        Cells(1 + Lastrow, 1).Offset(0, 2).Value = name_fark.Value
        Cells(1 + Lastrow, 1).Offset(0, 3).Value = tel.Value
        Cells(1 + Lastrow, 1).Offset(0, 4).Value = tel_home.Value
        Cells(1 + Lastrow, 1).Offset(0, 5).Value = bank_name.Value
        End If
        If Answer = vbYes Then
            MyNote = "ระบบบันทึกข้อมูลเรียบร้อยแล้ว"
            Answer = MsgBox(MyNote, vbQuestion, "บันทึกข้อมูล")
            Account_Name.Value = ""
        Account_number.Value = ""
        name_fark.Value = ""
        tel.Value = ""
        tel_home.Value = ""
        bank_name.Value = ""
        End If
        Account_number.Value = ""  '[color=#BF0000]สั่งให้ลบข้อมูล  textBox  ชื่อ  Account_number[/color]
        Sheets("title").Select
        Range("c4").Select
End Sub
แล้วจะเขียน code ให้แก้ข้อมูลเฉพาะในช่อง Account_number เพื่อไม่ให้รหัสซ้ำ ส่วนช่องอื่นยังคงข้อมูลไว้ ผมจะต้องเขียน code ต่อจากบรรทัด
Account_number.Value = "" 'สั่งให้ลบข้อมูล textBox ชื่อ Account_number อย่างไรครับ
ที่ผมลอง คือ นำ code ด้านล่างนี้ในส่วนบนมาวางต่อท้ายบรรทัดดังกล่าว ปรากฎว่าก็ยังไม่ได้อย่างที่ตั้งใจไว้

Code: Select all

 Lastrow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Cells(1 + Lastrow, 1).Offset(0, 0).Value = Account_number.Value
        Cells(1 + Lastrow, 1).Offset(0, 1).Value = Account_Name.Value
        Cells(1 + Lastrow, 1).Offset(0, 2).Value = name_fark.Value
        Cells(1 + Lastrow, 1).Offset(0, 3).Value = tel.Value
        Cells(1 + Lastrow, 1).Offset(0, 4).Value = tel_home.Value
        Cells(1 + Lastrow, 1).Offset(0, 5).Value = bank_name.Value
        End If
        If Answer = vbYes Then
            MyNote = "ระบบบันทึกข้อมูลเรียบร้อยแล้ว"
            Answer = MsgBox(MyNote, vbQuestion, "บันทึกข้อมูล")
            Account_Name.Value = ""
        Account_number.Value = ""
        name_fark.Value = ""
        tel.Value = ""
        tel_home.Value = ""
        bank_name.Value = ""
        End If
รบกวนต่ออีกนะครับ
ผมเริ่มสนุกกับการเขียน vba แล้วละครับ แต่ต้องใช้ความพยายามสูงมากศึกษาข้อมูลเยอะมาทีเดียว
ขอบคุณความรู้ที่อาจารย์ให้มาครับ
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: code vba ตรวจสอบข้อมูลไม่ทำงาน

#8

Post by snasui »

:D เมื่อเตือนแล้วให้ลบค่าใน Control เป้าหมายด้วย ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

'...
If Not Sheets("db_bank").Columns("A:A").Find(Range("i1"), LookIn:=xlValues) Is Nothing Then
    MsgBox "มีรหัสนี้แล้ว   ไม่สามารถบันทึกได้"
    Account_number.Value = "" '<== add this line
'...
tutape
Member
Member
Posts: 85
Joined: Tue Oct 02, 2012 12:59 pm

Re: code vba ตรวจสอบข้อมูลไม่ทำงาน

#9

Post by tutape »

ขอบคุณสำหรับคำแนะนำครับ นำมาใช้เป็นแนวทางในการปรับปรุง code ได้แล้วครับ
Post Reply