Page 1 of 3

pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Mon Jul 11, 2022 2:13 pm
by March201711
ถ้ามีคำว่า Others ใน column G ให้มี pop up แจ้งเตือนว่าให้ใส่ใน column I ว่า " what desciption??? และ column K ว่าเป็น " What price???ค่ะ
เข่น cell G18 เลือก drop down เป็น Other….Software(specific) ควรมี pop up แจ้งว่า ต้องกรอก ชื่อใน cell I18 และ ราคาที่ cell K18
เข่น cell G19 เลือก drop down เป็น Other….Hardware(specific) ควรมี pop up แจ้งว่า ต้องกรอก ชื่อใน cell I19 และ ราคาที่ cell K19
เข่น cell G20 เลือก drop down เป็น Other….Renovation(specific) ควรมี pop up แจ้งว่า ต้องกรอก ชื่อใน cell I20 และ ราคาที่ cell K20

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Mon Jul 11, 2022 4:29 pm
by snasui
:D การแจ้งเตือนด้วย Popup ต้องทำด้วย VBA จำเป็นต้องเขียนมาเองก่อนตามกฎการใช้บอร์ดข้อ 5 ด้านบน :roll: ติดตรงไหนค่อยถามกันต่อครับ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Mon Jul 11, 2022 9:20 pm
by March201711

Code: Select all

 Sub Pop_up_inColumn_I_and_K()

    If Worksheets("Form").Range("G18").Value = "Others…..Equipment (specific)" Then
 '    If Worksheets("Form").Range("G18").Value = "Others…..Hardware (specific)" Then
 '    If Worksheets("Form").Range("G18").Value = "Others…..Renovation (specific)" Then

    
    MsgBox ("Please fill the next column!")
    
    End If
    End Sub
 

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Mon Jul 11, 2022 9:22 pm
by snasui
:D ปัจจุบัน Code ที่เขียนมาแล้วนั้นยังติดปัญหาใด กรุณาอธิบายมาด้วยครับ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 9:40 am
by March201711
ติดปัญหาที่ ไม่ pop up ตรงcell ที่เลือก และไม่มี high light สีแสดงให้เห็นน่ะค่ะ

คือ ถ้าเลือก drop down ที่ column G เป็น others…..ในแต่ละ type ที่ column E ให้มี pop up หน้าต่างแสดงขึ้นมาว่า ให้กรอกที่ column I ว่าเป็น สินทรัพย์อะไรค่ะ ให้เม้าท์ไปวางที่ column I เช่น

เข่น ถ้าเลือก cell E18 type office equipment แล้วใน drop down ที่ cell G18 ไม่มีสินทรัพย์ที่เลือก แล้วไปเลือกเป็น others…..Equipment (specific) ให้มี pop up แจ้งว่า ต้องกรอก ชื่อใน cell I18 และ ราคาที่ cell K18
ถ้าเลือก cell E20 type Hardware แล้วใน drop down ที่ cell G20 ไม่มีสินทรัพย์ที่เลือก แล้วไปเลือกเป็น Others…..Hardware (specific) ให้มี pop up แจ้งว่า ต้องกรอก ชื่อใน cell I20 และ ราคาที่ cell K20
ถ้าเลือก cell E23 type Renovation แล้วใน drop down ที่ cell G23 ไม่มีสินทรัพย์ที่เลือก แล้วไปเลือกเป็น Others…..Renovation (specific) ให้มี pop up แจ้งว่า ต้องกรอก ชื่อใน cell I23 และ ราคาที่ cell K23

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 11:18 am
by snasui
:D ตัวอย่าง Code เขียนใน Worksheet ที่เกี่ยวข้องครับ

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Intersect(Target, Me.Range("i18:i38")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    If Me.Cells(Target.Row, "e").Value = "" Then
        MsgBox "Please fill value in column 'E'"
        Me.Cells(Target.Row, "e").Activate
    ElseIf Me.Cells(Target.Row, "g").Value = "" Then
        MsgBox "Please fill value in column 'G'"
        Me.Cells(Target.Row, "g").Activate
    End If
    Application.EnableEvents = True
End Sub

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 11:30 am
by March201711
ทำไม รันไม่ได้คะ แล้ว private sub ไม่เหมือนกัน sub ยังงัยคะ ช่วยบอกวิธีการรันให้หน่อยค่ะ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 11:42 am
by snasui
:D Code นี้ต้องอยู่ใน Sheet ของมันเองครับ

Private Sub ต่างกับ Sub ที่การเรียกใช้งาน ถ้าเป็น Private จะไม่สามารถเรียกใช้จาก Procedure ใน Module อื่นใดนอกจาก Procedure ใน Module มันเองได้

ส่วน Sub เป็นอันเดียวกับ Public Sub จะสามารถเรียกใช้งานจาก Procedure ที่อยู่ต่าง Module กันได้

ข้างบนนี้อธิบายตามสิ่งที่ถาม แต่เข้าใจว่าไม่ได้ถามประเด็นนี้ แต่เป็นประเด็นของ Change Event มากกว่า

Code ข้างต้นเป็นการดักจับการเลือกเซลล์ คือเมื่อคลิกเลือกเซลล์จะ Run Code เลย ไม่ต้องไปคลิกปุ่มหรือเมนู แต่จะต้องนำ Code นี้ไปวางใน Module ที่เป็นชีตของมันเองใน VBE ไม่ใช่วางใน Module ทั่วไปครับ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 2:09 pm
by March201711
เลือกเซลล์ตามที่อาจารย์บอกแล้ว ไม่เห็นมี pop up ขึ้นมาเลยค่ะ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 2:28 pm
by snasui
:D แนบไฟล์ที่ได้ปรับปรุง Code แล้วมาด้วยจะได้ช่วยดูให้ได้ครับ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 3:50 pm
by March201711
ติดปัญหาที่ ไม่ pop up ตรง cell ที่เลือก ค่ะ

Code: Select all

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Intersect(Target, Me.Range("i18:i38")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    
    If Me.Cells(Target.Row, "e").Value = "Office_equipment" Then
        MsgBox "Please fill value in column 'G'"
        Me.Cells(Target.Row, "g").Activate
    ElseIf Me.Cells(Target.Row, "g").Value = "Others…..Equipment (specific)" Then
        MsgBox "Please fill value in column 'I' and fill price in column 'K'"
        Me.Cells(Target.Row, "i", "K").Activate
    End If
    
    If Me.Cells(Target.Row, "e").Value = "Hardware" Then
        MsgBox "Please fill value in column 'G'"
        Me.Cells(Target.Row, "g").Activate
    ElseIf Me.Cells(Target.Row, "g").Value = "Others…..Hardware (specific)" Then
        MsgBox "Please fill value in column 'I' and fill price in column 'K'"
        Me.Cells(Target.Row, "i", "K").Activate
    End If
    
    If Me.Cells(Target.Row, "e").Value = "Renovation" Then
        MsgBox "Please fill value in column 'G'"
        Me.Cells(Target.Row, "g").Activate
    ElseIf Me.Cells(Target.Row, "g").Value = "Others…..Renovation (specific)" Then
        MsgBox "Please fill value in column 'I' and fill price in column 'K'"
        Me.Cells(Target.Row, "i", "K").Activate
    End If
    
    
    
    Application.EnableEvents = True
    
End Sub
 

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 5:15 pm
by snasui
:D จาก Statement นี้

If Intersect(Target, Me.Range("i18:i38")) Is Nothing Then Exit Sub เป็นการกำหนดว่าให้ Code ทำงานเมื่อมีการคลิกเลือกเซลล์ในช่วง i18:i38 เท่านั้น การเลือกเซลล์อื่น ๆ จะไม่มีผลให้ Code ทำงานครับ

เราจะใช้ส่วนนี้ไปตรวจสอบส่วนอื่น ๆ ว่าได้เลือกตรงกับที่ต้องการหรือไม่ก็สามารถทำได้โดยไม่ลำบาก

ส่วน Statement Me.Cells(Target.Row, "i", "K").Activate ไม่ถูกต้อง จำเป็นต้องแก้ไขเสียใหม่ ที่ถูกต้องควรเป็นเช่น Me.Cells(Target.Row, "i").Activate เป็นต้น

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 8:17 pm
by March201711
ถ้าจะให้มี pop up ที่ column k ตั้งแต่ k18 : k38 ด้วยล่ะคะ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 8:46 pm
by snasui
:D ลองปรับ Statement เดิมด้วยการเพิ่มช่วงเข้าไปดูครับ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 9:08 pm
by March201711
จะไม่เอา column j รวมด้วยน่ะค่ะ จะเพิ่มแค่เฉพาะ column i18 : i38 และ k18 : k38 ค่ะ เพิ่มแล้วมันก้อติด debug ค่ะ อาจารย์

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 9:11 pm
by snasui
:D แนบไฟล์ล่าสุดที่ปรับ Code แล้วมาด้วยจะได้ตอบต่อไปจากนั้นครับ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Tue Jul 12, 2022 10:59 pm
by March201711
ปรับ code เพิ่ม range k18:K38 แล้ว และอยากให้ pop up ไปที่ Row K พอปรับแล้ว ใช้งานไม่ได้ค่ะ รบกวนอาจารย์ช่วยดูให้หน่อยนะคะ ขอบคุณค่ะ

Code: Select all

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Intersect(Target, Me.Range("i18:i38"), Me.Range("k18:k38")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    
    If Me.Cells(Target.Row, "g").Value = "Others…..Equipment (specific)" Then
        MsgBox "Please fill Others(description) in column 'I'"
        Me.Cells(Target.Row, "i").Activate
    ElseIf Me.Cells(Target.Row, "g").Value = "Others…..Equipment (specific)" Then
        MsgBox "Please fill Price/unit in column 'K'"
        Me.Cells(Target.Row, "k").Activate
    End If
    
    
'
'    If Me.Cells(Target.Row, "e").Value = "Hardware" Then
'        MsgBox "Please fill value in column 'G'"
'        Me.Cells(Target.Row, "g").Activate
'    ElseIf Me.Cells(Target.Row, "g").Value = "Others…..Hardware (specific)" Then
'        MsgBox "Please fill value in column 'I' and fill price in column 'K'"
'        Me.Cells(Target.Row, "i").Activate
'    End If
'
'    If Me.Cells(Target.Row, "e").Value = "Renovation" Then
'        MsgBox "Please fill value in column 'G'"
'        Me.Cells(Target.Row, "g").Activate
'    ElseIf Me.Cells(Target.Row, "g").Value = "Others…..Renovation (specific)" Then
'        MsgBox "Please fill value in column 'I' and fill price in column 'K'"
'        Me.Cells(Target.Row, "i").Activate
'    End If
'
    
    
    Application.EnableEvents = True
    
End Sub

 

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Wed Jul 13, 2022 6:41 am
by snasui
:D ตัวอย่างการปรับ Code ครับ

จาก

If Intersect(Target, Me.Range("i18:i38"), Me.Range("k18:k38")) Is Nothing Then Exit Sub

ปรับเป็น

If Intersect(Target, Me.Range("i18:i38, k18:k38")) Is Nothing Then Exit Sub

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Wed Jul 13, 2022 7:57 am
by March201711
ค่ะ ถ้าเอาเซลล์ไปไว้ที่ column K ทำไม pop up ยังขึ้น ให้ไปที่ column i คะ เพราะเขียน code ไว้ ให้ไปที่ column k แล้วน่ะค่ะ
แบบนี้ค่ะ

Code: Select all

If Me.Cells(Target.Row, "g").Value = "Others…..Equipment (specific)" Then
        MsgBox "Please fill Others(description) in column 'I'"
        Me.Cells(Target.Row, "i").Activate
   ElseIf Me.Cells(Target.Row, "g").Value = "Others…..Equipment (specific)" Then
        MsgBox "Please fill Price/unit in column 'K'"
        Me.Cells(Target.Row, "k").Activate
    End If
ต้องปรับยังไงคะให้ขึ้น pop up แจ้งว่า Please fill Price/unit in column K และ cell อยู่ตำแหน่งที่ column K ค่ะ

Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม

Posted: Wed Jul 13, 2022 11:26 am
by snasui
:D กรุณาแนบไฟล์พร้อม Code ล่าสุด แจ้งปัญหาที่เป็นและสิ่งที่ต้องการ จะได้ตอบต่อไปจากนั้นครับ