Page 1 of 1

การตรวจสอบข้อมูล

Posted: Mon Jul 06, 2015 11:26 pm
by sutham
ผมได้เขียน code ตรวจสอบข้อมูล โดยรายละเอียดจะปรากฎในไฟล์แนบ ซึ่ง code ที่ผมเขียนขึ้นมามีดังนี้
code สำหรับใช้เมื่อกดปุ่ม ตรวจข้อมูล

Code: Select all

Sub check_data()
        Range("b4").Select
        Cells.Find(What:="*และ หักนอก", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        Selection.Offset(0, 2).Select
        If Selection.Value = "" Then
        MsgBox "กรอกจำนวนเงินที่ต้องการหักในช่องนี้"
        Exit Sub
        Else
        Selection.Offset(0, -2).Select
        Cells.Find(What:="*และ หักนอก", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        Selection.Offset(0, 2).Select
        If Selection.Value <> "" Then
        Exit Sub
        End If
        End If
End Sub
และ code สำหรับ worksheet ดังนี้

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errorline
    If Target.Column = 4 Then
        Selection.Offset(0, -2).Select
        Cells.Find(What:="*และ หักนอก", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        Selection.Offset(0, 2).Select
        If Selection.Value = "" Then
        MsgBox "กรอกจำนวนเงินที่ต้องการหักในช่องนี้"
        Else
        Selection.Offset(0, -2).Select
        Cells.Find(What:="*และ หักนอก", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        Selection.Offset(0, 2).Select
          If Selection.Value <> "" Then
        Range("a1").Select
        MsgBox "ข้อมูลเรียบร้อย"
        End If
        End If
        Exit Sub
    Else
    Exit Sub
    End If
errorline:
Range("a1").Select
    Exit Sub
End Sub
เพื่อให้งานออกมาสำเร็จตามที่ต้องการผมไม่แน่ใจว่าผมจะต้องเพิ่มเติม code หรือไม่ อย่างไร รบกวนขอคำแนะนำด้วยครับ :)

Re: การตรวจสอบข้อมูล

Posted: Tue Jul 07, 2015 8:48 am
by logic
โค้ดที่โพสต์มาด้านบนติดตรงไหน อย่างไรบ้างครับ :|

Re: การตรวจสอบข้อมูล

Posted: Tue Jul 07, 2015 9:40 am
by sutham
logic wrote:โค้ดที่โพสต์มาด้านบนติดตรงไหน อย่างไรบ้างครับ :|
code ด้านบน ในครั้งแรกก็ใช้งานได้ครับ แต่เมื่อใส่ข้อมูลทุกอย่างครับแล้ว แล้วรัน code สำหรับปุ่ม ตรวจข้อมูลอีกครั้ง
อยากให้แสดงข้อความว่า "ข้อความสมบูรณ์แล้ว" จะต้องปรับ code อย่างไร ที่เข้าใจน่าจะเป็นลักษณะของการวน loop เลยต้องขอคำแนะนำครับ :)

Re: การตรวจสอบข้อมูล

Posted: Tue Jul 07, 2015 2:22 pm
by DhitiBank
ที่ Procedure check_data ใน Module1 ลองปรับโค้ดเป็นแบบนี้ครับ

Code: Select all

Sub check_data()
        Dim r As Range, rCheck As Range
        Dim lRow As Long
        Dim wsAct As Worksheet
        Set wsAct = ActiveSheet
        With wsAct
            lRow = WorksheetFunction.Max(4, .Range("b" & .Rows.Count).End(xlUp).Row)
            Set rCheck = .Range("b4:b" & lRow)
        End With
        For Each r In rCheck
            If InStr(1, r.Value, "และ หักนอก") > 0 Then
                If r.Offset(0, 2) = "" Then
                    r.Offset(0, 2).Select
                    MsgBox "โปรดใส่จำนวนเงินที่จะหักในเซลล์ " & r.Offset(0,2).Address(0, 0)
                    Exit Sub
                End If
            End If
        Next r
        MsgBox "ข้อมูลสมบูรณ์แล้ว"
End Sub

Re: การตรวจสอบข้อมูล

Posted: Tue Jul 07, 2015 11:25 pm
by sutham
ขอบคุณครับ สำหรับคำแนะนำครับ เป็นความรู้เพิ่มเติมให้เป็นอย่างมาก