Page 2 of 2

Re: รบกวนช่วยดู code

Posted: Mon Feb 13, 2017 10:03 am
by snasui
:D ตัวอย่างการ Loop เพื่อแสดงผลว่าเซลล์ใดครบกำหนด ลองนำไปปรับใช้ดูครับ

Code: Select all

Sub Msgbox_show()
    Dim rall As Range
    For Each r In Range("L3:L203")
        If r.Value = "ครบกำหนด" Then
            MsgBox r.Address(0, 0) & " ครบกำหนดแล้ว"
        End If
    Next r
End Subb

Re: รบกวนช่วยดู code

Posted: Mon Feb 13, 2017 10:10 am
by rich37
snasui wrote::D ตัวอย่างการ Loop เพื่อแสดงผลว่าเซลล์ใดครบกำหนด ลองนำไปปรับใช้ดูครับ

Code: Select all

Sub Msgbox_show()
    Dim rall As Range
    For Each r In Range("L3:L203")
        If r.Value = "ครบกำหนด" Then
            MsgBox r.Address(0, 0) & " ครบกำหนดแล้ว"
        End If
    Next r
End Subb
ใช้ได้ครับ แต่จะให้แสดงเมื่อเปิดไฟล์ ครบนัด ได้อย่างไรครับ เมื่อเงื่อนไขเป็นจริง รบกวนด้วยครับ

Re: รบกวนช่วยดู code

Posted: Mon Feb 13, 2017 10:15 am
by snasui
:D แสดงเมื่อเปิดไฟล์ต้องเรียกใช้จาก Event Open ครับ ตัวอย่าง http://www.excel-easy.com/vba/events.html

Re: รบกวนช่วยดู code

Posted: Mon Feb 13, 2017 10:21 am
by rich37
snasui wrote::D แสดงเมื่อเปิดไฟล์ต้องเรียกใช้จาก Event Open ครับ ตัวอย่าง http://www.excel-easy.com/vba/events.html
ขอบคุณมากๆครับอาจารย์ ตรงตามความต้องการทุกอย่างแล้วครับ

Re: รบกวนช่วยดู code

Posted: Mon Feb 13, 2017 11:18 am
by rich37

Code: Select all

Sub Msgbox_show()
    Dim rall As Range
    For Each r In Range("L3:L203")
        If r.Value = "ครบกำหนด" Then
            MsgBox r.Address(0, 0) & " ครบกำหนดแล้ว"
        End If
    Next r
End Subb
Code ด้านบนจะวนไปจนกว่าจะครบตามเงื่อนไข ถ้าต้องการจะให้โชว์ Msgbox แค่ครั้งเดียวไม่ว่าจะมีกี่เซลส์ก็ตามที่ครบกำหนดได้หรือไม่ครับ

Re: รบกวนช่วยดู code

Posted: Mon Feb 13, 2017 11:37 am
by snasui
:D ต้องปรับมาเองก่อน ติดแล้วค่อยถามกันต่อครับ

Re: รบกวนช่วยดู code

Posted: Mon Feb 13, 2017 1:14 pm
by rich37
มีปัญหาใหม่เกิดขึ้นครับจาก Code ด้านล่าง เริ่มต้นจากถ้าข้อมูลในชีต Data ไม่มีข้อมูลแล้วกดส่งข้มูล สูตรที่สร้างไว้ในชีตจะถูกลบไปทั้งหมดผมเลยใส่ Msgbox ( If Worksheets("Data").Range("A3") = "" Then
MsgBox "คุณไม่มีข้อมูลที่จะส่งไป กรุณากรอกข้อมูลก่อน", vbExclamation, "กรุณากรอกข้อมูล"
Else )เตือนไว้ก็ใช้ได้ผล แต่พอชีต Data มีข้อมูล( ไม่เข้าเงื่อนไข ActiveSheet.Range("$A$2:$M$202").AutoFilter Field:=12, Criteria1:="ครบกำหนด" ) ก็เกิด error ตามรูปแนบ พาสปลดล็อค 123456789 ครับ

Code: Select all

Private Sub CommandButton1_Click()
        If Worksheets("Data").Range("A3") = "" Then
            MsgBox "คุณไม่มีข้อมูลที่จะส่งไป กรุณากรอกข้อมูลก่อน", vbExclamation, "กรุณากรอกข้อมูล"
        Else
        ActiveSheet.Unprotect  
        Selection.AutoFilter       
        ActiveSheet.Range("$A$2:$M$202").AutoFilter Field:=12, Criteria1:="ครบกำหนด"
        Sheets("Data").Range("Source").Copy Sheets("Report").Range("Target")
        Range("Source").ClearContents           
        ActiveSheet.Range("$A$2:$M$202").AutoFilter Field:=12
        Sheets("Data").Range("Source").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True  
        ActiveWorkbook.Save       
        Application.DisplayAlerts = False
        Application.Quit         
        End If
End Sub

Re: รบกวนช่วยดู code

Posted: Mon Feb 13, 2017 3:50 pm
by rich37
ปัญหาแก้ไขได้แล้ว เล่นเอาเหนื่อย ขอบคุณอาจารย์ที่แนะนำครับ