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

การแจ้งเตือนด้วย Popup ต้องทำด้วย VBA จำเป็นต้องเขียนมาเองก่อนตามกฎการใช้บอร์ดข้อ 5 ด้านบน

ติดตรงไหนค่อยถามกันต่อครับ
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

ปัจจุบัน 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

ตัวอย่าง 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

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

แนบไฟล์ที่ได้ปรับปรุง 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

จาก 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

ลองปรับ 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

แนบไฟล์ล่าสุดที่ปรับ 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

ตัวอย่างการปรับ 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

กรุณาแนบไฟล์พร้อม Code ล่าสุด แจ้งปัญหาที่เป็นและสิ่งที่ต้องการ จะได้ตอบต่อไปจากนั้นครับ