Page 1 of 2

สอบถามเรื่องการแจ้งเตือนครับ

Posted: Fri Jul 13, 2018 5:16 pm
by Leng
พอดีผมต้องการเขียน vba โดยแจ้งเตือนถ้าหากไม่มีข้อมูลครับ
-ผมได้ทำการสร้าง user from และ textbox ครับ โดย textbox ที่ผมทำนั้นได้เขียน vlookup ไว้
เช่น
ถ้า textbox1 ได้ มีการลงข้อมูลว่า 1234 textbox2 ก็จะ Auto เป็น 4567 โดยการเซตข้อมูลไว้จาก sheet1

สิ่ที่ต้องการคือ
-ถ้าไม่มีข้อมูล อยากให้แจ้งเตือนว่า"กรุณาใส่ข้อมูลก่อน"

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Fri Jul 13, 2018 7:03 pm
by snasui
:D การใช้ VBA ต้องเขียนมาเองก่อนเสมอ แนบไฟล์ที่ได้เขียน Code ไว้แล้วมาถามกัน แจ้ง Procedure ที่ติดปัญหา บรรทัดที่ติดปัญหา จะได้สะดวกในการตอบครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 8:07 am
by Leng
อาจารย์ครับไม่ทราบอาจารย์พอจะมีเว็บหรืออะไรให้ดูเป็นแนวทางไหมครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 9:05 am
by snasui
:D คงต้องลอง Search ดู เช่น Link นี้เป็นต้นครับ เตือน+VBA

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 9:14 am
by Leng

Code: Select all

Private Sub TextBox5_AfterUpdate()
If Me.TextBox5.Text = "" Then Exit Sub
    emptyrow = WorksheetFunction.CountA(Range("A:A")) + 1
    Worksheets("IN").Cells(emptyrow, 1).Value = TextBox1.Value
    Worksheets("IN").Cells(emptyrow, 2).Value = TextBox2.Value
    Worksheets("IN").Cells(emptyrow, 3).Value = TextBox4.Value
    Worksheets("IN").Cells(emptyrow, 4).Value = ComboBox1.Value
    Worksheets("IN").Cells(emptyrow, 5).Value = TextBox5.Value
    Worksheets("IN").Cells(emptyrow, 6).Value = TextBox6.Value
    Worksheets("IN").Cells(emptyrow, 7).Value = TextBox7.Value
    Worksheets("IN").Cells(emptyrow, 8).Value = TextBox8.Value
    Worksheets("IN").Cells(emptyrow, 9).Value = TextBox9.Value
    
    
    If WorksheetFunction.CountIf(Sheets("Data").Range("A:D"), Me.TextBox5.Value) = 0 Then
Me.TextBox5.Value = ""
End If
With Me
.TextBox6 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 2, 0)
.TextBox7 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 3, 0)
.TextBox8 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 4, 0)

End With
    End Sub
ปัญหาคือพอไม่มีข้อมูลในชีท data จะขึ้น error ครับและจะเด้งมาหน้าโค๊ดเลยรบกวนอาจารช่วยหน่อยครับถ้าไม่มีข้อมูลอยากให้ขึ้นว่า"กรุณาตรสจสอบข้อมูล.

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 9:26 am
by snasui
:D ตัวอย่างการปรับ Code ที่ใช้ตรวจสอบว่าไม่มีข้อมูลแล้วให้ออกจาก Procedure ครับ

Code: Select all

If WorksheetFunction.CountIf(Sheets("Data").Range("A:A"), Me.TextBox5.Value) = 0 Then
    Me.TextBox5.Value = ""
    MsgBox "Not found."
    Exit Sub
End If

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 9:37 am
by Leng

Code: Select all

Private Sub TextBox5_AfterUpdate()
If Me.TextBox5.Text = "" Then Exit Sub
    emptyrow = WorksheetFunction.CountA(Range("A:A")) + 1
    Worksheets("IN").Cells(emptyrow, 1).Value = TextBox1.Value
    Worksheets("IN").Cells(emptyrow, 2).Value = TextBox2.Value
    Worksheets("IN").Cells(emptyrow, 3).Value = TextBox4.Value
    Worksheets("IN").Cells(emptyrow, 4).Value = ComboBox1.Value
    Worksheets("IN").Cells(emptyrow, 5).Value = TextBox5.Value
    Worksheets("IN").Cells(emptyrow, 6).Value = TextBox6.Value
    Worksheets("IN").Cells(emptyrow, 7).Value = TextBox7.Value
    Worksheets("IN").Cells(emptyrow, 8).Value = TextBox8.Value
    Worksheets("IN").Cells(emptyrow, 9).Value = TextBox9.Value
    
    
    If WorksheetFunction.CountIf(Sheets("Data").Range("A:D"), Me.TextBox5.Value) = 0 Then
Me.TextBox5.Value = ""
End If
With Me
.TextBox6 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 2, 0)
.TextBox7 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 3, 0)
.TextBox8 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 4, 0)
End With

If WorksheetFunction.CountIf(Sheets("Data").Range("A:A"), Me.TextBox5.Value) = 0 Then
    Me.TextBox5.Value = ""
    MsgBox "Not found."
    Exit Sub
End If

    End Sub
ไม่สามารถ run ได้ครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 9:42 am
by snasui
:D ใสแทน Code ด้านล่างนี้ ไม่ใช่ใส่เพิ่มครับ

Code: Select all

    If WorksheetFunction.CountIf(Sheets("Data").Range("A:D"), Me.TextBox5.Value) = 0 Then
Me.TextBox5.Value = ""
End If
ข้อสังเกต ถ้าเพิ่มผมจะบอก Code แวดล้อมไปด้วยครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 9:48 am
by Leng
ได้ละครับ แต่ติดปัญหาคือ พอ scan แล้วข้อมูลก็จะ add ลงหมดทั้งๆที่ขึ้น MsgBox "Not found." แล้ว

Code: Select all

Private Sub TextBox5_AfterUpdate()
If Me.TextBox5.Text = "" Then Exit Sub
    emptyrow = WorksheetFunction.CountA(Range("A:A")) + 1
    Worksheets("IN").Cells(emptyrow, 1).Value = TextBox1.Value
    Worksheets("IN").Cells(emptyrow, 2).Value = TextBox2.Value
    Worksheets("IN").Cells(emptyrow, 3).Value = TextBox4.Value
    Worksheets("IN").Cells(emptyrow, 4).Value = ComboBox1.Value
    Worksheets("IN").Cells(emptyrow, 5).Value = TextBox5.Value
    Worksheets("IN").Cells(emptyrow, 6).Value = TextBox6.Value
    Worksheets("IN").Cells(emptyrow, 7).Value = TextBox7.Value
    Worksheets("IN").Cells(emptyrow, 8).Value = TextBox8.Value
    Worksheets("IN").Cells(emptyrow, 9).Value = TextBox9.Value
    
    
If WorksheetFunction.CountIf(Sheets("Data").Range("A:D"), Me.TextBox5.Value) = 0 Then
    Me.TextBox5.Value = ""
    MsgBox "Not found."
    Exit Sub
End If

With Me
.TextBox6 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 2, 0)
.TextBox7 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 3, 0)
.TextBox8 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 4, 0)
End With

If WorksheetFunction.CountIf(Sheets("Data").Range("A:D"), Me.TextBox5.Value) = 0 Then
    Me.TextBox5.Value = ""
    MsgBox "Not found."
    Exit Sub
End If

    End Sub

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 9:58 am
by snasui
:D ลองพยายาม Debug และแก้ไขมาดูก่อน นำสิ่งที่พยายามแล้วยังติดอยู่มาถามกันต่อครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 10:02 am
by Leng
ได้ละครับขอบคุณอาจารย์มากครับ :D :thup:

Code: Select all

Private Sub TextBox5_AfterUpdate()
If WorksheetFunction.CountIf(Sheets("Data").Range("A:D"), Me.TextBox5.Value) = 0 Then
    Me.TextBox5.Value = ""
    MsgBox "Not found."
    Exit Sub
End If
    emptyrow = WorksheetFunction.CountA(Range("A:A")) + 1
    Worksheets("IN").Cells(emptyrow, 1).Value = TextBox1.Value
    Worksheets("IN").Cells(emptyrow, 2).Value = TextBox2.Value
    Worksheets("IN").Cells(emptyrow, 3).Value = TextBox4.Value
    Worksheets("IN").Cells(emptyrow, 4).Value = ComboBox1.Value
    Worksheets("IN").Cells(emptyrow, 5).Value = TextBox5.Value
    Worksheets("IN").Cells(emptyrow, 6).Value = TextBox6.Value
    Worksheets("IN").Cells(emptyrow, 7).Value = TextBox7.Value
    Worksheets("IN").Cells(emptyrow, 8).Value = TextBox8.Value
    Worksheets("IN").Cells(emptyrow, 9).Value = TextBox9.Value

With Me
.TextBox6 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 2, 0)
.TextBox7 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 3, 0)
.TextBox8 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 4, 0)
End With

    End Sub

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 1:27 pm
by Leng
ติดปัญหาครับรบกวนอาจารย์หน่อยครับ
-เวลาแสกนทีแรกข้อมูลไม่ขึ้นครับแต่แสกนทีที่ 2 ข้อมูลขึ้นปกติครับรบกวนอาจารย์หน่อยครับ

Code: Select all

Private Sub TextBox5_AfterUpdate()
If WorksheetFunction.CountIf(Sheets("Data").Range("A:D"), Me.TextBox5.Value) = 0 Then
    Me.TextBox5.Value = ""
    MsgBox "Not found."
    Exit Sub
End If
    emptyrow = WorksheetFunction.CountA(Range("A:A")) + 1
    Worksheets("IN").Cells(emptyrow, 1).Value = TextBox1.Value
    Worksheets("IN").Cells(emptyrow, 2).Value = TextBox2.Value
    Worksheets("IN").Cells(emptyrow, 3).Value = TextBox4.Value
    Worksheets("IN").Cells(emptyrow, 4).Value = ComboBox1.Value
    Worksheets("IN").Cells(emptyrow, 5).Value = TextBox5.Value
    Worksheets("IN").Cells(emptyrow, 6).Value = TextBox6.Value
    Worksheets("IN").Cells(emptyrow, 7).Value = TextBox7.Value
    Worksheets("IN").Cells(emptyrow, 8).Value = TextBox8.Value
    Worksheets("IN").Cells(emptyrow, 9).Value = TextBox9.Value

With Me
.TextBox6 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 2, 0)
.TextBox7 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 3, 0)
.TextBox8 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 4, 0)
End With

    End Sub

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 1:29 pm
by snasui
:D แนบไฟล์ล่าสุดมาด้วยเสมอจะได้ดูต่อไปจากนั้นครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 1:37 pm
by Leng

Code: Select all

Private Sub TextBox5_AfterUpdate()
If WorksheetFunction.CountIf(Sheets("Data").Range("A:D"), Me.TextBox5.Value) = 0 Then
    Me.TextBox5.Value = ""
    MsgBox "Not found."
    Exit Sub
End If
    emptyrow = WorksheetFunction.CountA(Range("A:A")) + 1
    Worksheets("IN").Cells(emptyrow, 1).Value = TextBox1.Value
    Worksheets("IN").Cells(emptyrow, 2).Value = TextBox2.Value
    Worksheets("IN").Cells(emptyrow, 3).Value = TextBox4.Value
    Worksheets("IN").Cells(emptyrow, 4).Value = ComboBox1.Value
    Worksheets("IN").Cells(emptyrow, 5).Value = TextBox5.Value
    Worksheets("IN").Cells(emptyrow, 6).Value = TextBox6.Value
    Worksheets("IN").Cells(emptyrow, 7).Value = TextBox7.Value
    Worksheets("IN").Cells(emptyrow, 8).Value = TextBox8.Value
    Worksheets("IN").Cells(emptyrow, 9).Value = TextBox9.Value

With Me
.TextBox6 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 2, 0)
.TextBox7 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 3, 0)
.TextBox8 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 4, 0)
End With

    End Sub
ติดปัญหาครับรบกวนอาจารย์หน่อยครับ
-เวลาแสกนทีแรกข้อมูลไม่ขึ้นครับแต่แสกนทีที่ 2 ข้อมูลขึ้นปกติครับรบกวนอาจารย์หน่อยครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 1:42 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub TextBox5_AfterUpdate()
if me.textbox5.text = "" then exit sub
If WorksheetFunction.CountIf(Sheets("Data").Range("A:A"), Me.TextBox5.Value) = 0 Then
    'Me.TextBox5.Value = ""
    MsgBox "Not found."
    Exit Sub
End If
'Other code...

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 1:47 pm
by Leng

Code: Select all

Private Sub TextBox5_AfterUpdate()
If Me.TextBox5.Text = "" Then Exit Sub
If WorksheetFunction.CountIf(Sheets("Data").Range("A:A"), Me.TextBox5.Value) = 0 Then
    'Me.TextBox5.Value = ""
    MsgBox "Not found."
    Exit Sub
End If
    emptyrow = WorksheetFunction.CountA(Range("A:A")) + 1
    Worksheets("IN").Cells(emptyrow, 1).Value = TextBox1.Value
    Worksheets("IN").Cells(emptyrow, 2).Value = TextBox2.Value
    Worksheets("IN").Cells(emptyrow, 3).Value = TextBox4.Value
    Worksheets("IN").Cells(emptyrow, 4).Value = ComboBox1.Value
    Worksheets("IN").Cells(emptyrow, 5).Value = TextBox5.Value
    Worksheets("IN").Cells(emptyrow, 6).Value = TextBox6.Value
    Worksheets("IN").Cells(emptyrow, 7).Value = TextBox7.Value
    Worksheets("IN").Cells(emptyrow, 8).Value = TextBox8.Value
    Worksheets("IN").Cells(emptyrow, 9).Value = TextBox9.Value

With Me
.TextBox6 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 2, 0)
.TextBox7 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 3, 0)
.TextBox8 = Application.WorksheetFunction.VLookup(CLng(Me.TextBox5), Sheets("Data").Range("lookupdata"), 4, 0)
End With

    End Sub
ยังเหมือนเดิมครับ
-เวลาแสกนทีแรกข้อมูลไม่ขึ้นครับแต่แสกนทีที่ 2 ข้อมูลขึ้นปกติครับรบกวนอาจารย์หน่อยครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 1:52 pm
by snasui
:D บอกค่าทดสอบมาให้ครบทุกช่องเสมือนทำงานจริงจะได้ทดสอบดูได้ ตอนนี้ผมเพียงทดสอบกรอกแค่ TextBox5 ที่ใช้ Scan เท่านั้น ซึ่งพบว่าทำงานได้ตามปกติครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 1:59 pm
by Leng
พอแสกนทีที่ 1 ข้อมูลที่ vlookup ไว้ไม่ขึ้นครับ
พอแสกนทีที่ 2 ข้อมูลที่ vlookup ขึ้นตามปกติครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 2:23 pm
by snasui
:D ดูแล้วไม่เข้าใจครับ

เพื่อให้การ Debug เกิดความกระชับ รวดเร็ว สิ่งที่ต้องทำคือ ให้แนบมาเฉพาะ Code ที่เกี่ยวข้องกับประเด็นปัญหา ส่วนที่ไม่เกี่ยวข้องให้ Mark ทิ้งไปก่อน
  1. Mark Code การขยายหน้าจอและซ่อนเมนูออกไป
  2. Mark การกดปุ่ม Exit แล้วปิดไฟล์ออกไป
  3. Mark การซ่อนชีตซ่อนหัวบรรทัดออกไป
จากที่ถามมาในโพสต์แรกคือตามด้านล่าง
Leng wrote: Fri Jul 13, 2018 5:16 pm พอดีผมต้องการเขียน vba โดยแจ้งเตือนถ้าหากไม่มีข้อมูลครับ
-ผมได้ทำการสร้าง user from และ textbox ครับ โดย textbox ที่ผมทำนั้นได้เขียน vlookup ไว้
เช่น
ถ้า textbox1 ได้ มีการลงข้อมูลว่า 1234 textbox2 ก็จะ Auto เป็น 4567 โดยการเซตข้อมูลไว้จาก sheet1

สิ่งที่ต้องการคือ
-ถ้าไม่มีข้อมูล อยากให้แจ้งเตือนว่า"กรุณาใส่ข้อมูลก่อน"
ช่วยทำไฟล์สภาพนี้มา หรือหากแก้ได้แล้วให้ระบุปัญหาที่เป็น ณ ปัจจุบัน แนบไฟล์ด้วยสภาพแวดล้อมที่เกิดปัญหานั้นมาอีกที อย่าลืมที่ผมแจ้งไปด้านบนว่าให้นำมาถามเฉพาะ Code ที่เกี่ยวข้องกับปัญหาเท่านั้น เพื่อให้เกิดความสะดวกต่อการเข้าถึงปัญหาครับ

Re: สอบถามเรื่องการแจ้งเตือนครับ

Posted: Sat Jul 14, 2018 2:33 pm
by Leng
ต้องขอโทษด้วยครับ