Page 2 of 3
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Wed Jul 13, 2022 12:36 pm
by March201711
ติดปัญหาที่ ไม่ pop up ตรง cell ที่เลือก ค่ะ
อยากให้ pop up แจ้งว่า Please fill Price/unit in column K แต่ตามภาพไม่ได้ pop up แบบนั้น ทั้งๆ ที่ ก้อเขียน code
Code: Select all
ElseIf Me.Cells(Target.Row, "h").Value = "Others…..Equipment (specific)" Then
MsgBox "Please fill Price/unit in column 'K'"
Me.Cells(Target.Row, "k").Activate
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Wed Jul 13, 2022 12:38 pm
by snasui
March201711 wrote: Wed Jul 13, 2022 12:36 pm
ติดปัญหาที่ ไม่ pop up ตรง cell ที่เลือก ค่ะ

กรุณายกตัวอย่างเซลล์ที่เลือกโดยระบุให้ถึง
ตำแหน่งเซลล์มาด้วยครับ
คำว่า "
ก้อ" กรุณาเขียนเป็น "
ก็" ตามกฎการใช้บอร์ดข้อ 1 ด้านบนครับ
และจาก Statement นี้
ElseIf Me.Cells(Target.Row, "h").Value = "Others…..Equipment (specific)" Then กรุณาตรวจสอบว่าคอลัมน์
H เกี่ยวข้องหรือไม่ หากไม่เกี่ยวข้องต้องเปลี่ยน "h" เป็นคอลัมน์ที่ต้องการใช้งานจริงครับ
โดยภาพรวม Code นั้นทำงานได้เป็นปกติ ที่เหลือคือเงื่อนไขที่จะใช้ใน Code ซึ่งจะต้องกำหนดให้ชัดว่าเมื่อเลือกคอลัมน์ไหน ให้มีการตรวจสอบเซลล์ไหน เมื่อตรวจสอบแล้วต้องการให้แสดงผลอย่างไร เป็นต้น
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Wed Jul 13, 2022 1:35 pm
by March201711
ขอโทษ ค่ะอาจารย์ จาก column h ต้องเป็น column g ค่ะ คือเป็นการบังคับให้กรอกราคาใน column k ถ้าเลือก ข้อความจาก column g เป็น others ....Equipment ค่ะ พอเปลี่ยนแล้ว ก็ไม่ได้ค่ะ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Wed Jul 13, 2022 1:46 pm
by March201711
ติดปัญหาที่ ไม่ pop up ตรง cell ที่เลือก ค่ะ
อยากให้ pop up แจ้งว่า Please fill Price/unit in column K แต่ตามภาพไม่ได้ pop up แบบนั้น ทั้งๆ ที่เขียน code
Code: Select all
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
พอกด ok ปุ๊บ cell ก็เด้งกลับไปที่ column I เหมือนเดิมค่ะ
ก column h ต้องเป็น column g ค่ะ คือเป็นการบังคับให้กรอกราคาใน column k ถ้าเลือก ข dropdown อความจาก column g เป็น others ....Equipment ค่ะ พอเปลี่ยนแล้ว ก็ไม่ได้ค่ะ pop up เป็นข้อความเดิมที่ column I ค่ะ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Wed Jul 13, 2022 4:00 pm
by snasui

ผมไม่พบสิ่งผิดปกติใน Code ดังกล่าว
ควรระบุให้ชัดว่าเลือกเซลล์ไหน เช่น K18 เมื่อเลือกแล้วต้องการให้แสดงผลอย่างไรและปัจจุบันแสดงผลเช่นไร สิ่งสำคัญคือต้อง Debug เองให้เป็น
สำหรับการ Debug ให้คลิกยังตำแหน่งที่ลูกศรชี้แล้วคลิกเลือกเซลล์ใด ๆ จากนั้นกดแป้น F8 เพื่อดูการทำงานของ Code ไปทีละลำดับจะได้ทราบว่า Code ทำงานตรงกับที่ต้องการหรือไม่ อย่างไร แจ้งสิ่งที่เป็นปัญหาพร้อมกับ
ระบุเซลล์ที่คลิก จะได้ช่วยกันทดสอบได้ครับ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Wed Jul 13, 2022 9:59 pm
by March201711
ค่ะ ถ้าเอา cursor ไปที่ column K แล้วอยากให้ pop up แจ้งว่า "Please fill Price/unit in column 'K'" ตาม code นี้
Code: Select all
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
แต่ปรากฎว่า พอ cursor ไปที่ column K แล้ว pop up ขึ้นแจ้ง Please fill Others(description) in column 'I'" ซึ่งไม่ตรงกับที่เขียนไว้ ว่าให้ไปที่ column K น่ะค่ะ ต้องปรับ code ยังไง ว่าให้ pop up ขึ้นแจ้ง Please fill Price/unit in column 'K' และ cursor ไปที่ column K คะ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Wed Jul 13, 2022 11:31 pm
by snasui

ตามไฟล์ที่แนบมาไม่มีกรณีใดเข้าเงื่อนไขตรง Elseif สักเซลล์เดียว มีแค่เข้าเงื่อนไขตรง If เมื่อคลิก K18 เท่านั้นครับ
สำหรับ If Statement เมื่อเข้าเงื่อนไขใดแล้วจะทำตามคำสั่งที่เขียนไว้ภายใต้เงื่อนไขนั้นและจะออกจาก Statement เลย จะไม่ตรวจสอบเงื่อนไขอื่นใดอีก กรุณาศึกษาตรงนี้ให้เข้าใจ
ที่สำคัญ ใน Code ที่เขียนมา If และ Elseif เป็นการตรวจสอบเงื่อนไขเดียวกัน ที่ถูกต้องจะต้องเขียนให้ต่างกันออกไป ไม่เช่นนั้นจะ
ไม่มีโอกาสทำงานภายใต้ Elseif เลย
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Thu Jul 14, 2022 8:02 am
by March201711
คือ เอา code มาจากอาจารย์ที่ให้ตามความเห็นที่ 6 แต่เอามาเปลี่ยนแปลงปรับใช้น่ะค่ะ ต้องปรับ code ยังไงคะ ถ้าไม่ใช้ elseif คะ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Thu Jul 14, 2022 8:34 am
by snasui

ส่วนนี้ต้องเรียนรู้และปรับเองให้ตรงกับที่จะใช้งานจริงครับ
ลองศึกษาจาก Link นี้เป็นเบื้องต้นครับ
https://snasui.com/wordpress/if-then-else/
ศึกษาความรู้เกี่ยวกับ VBA ตั้งแต่หัวข้อที่ 208 เป็นต้นไปจาก Link นี้ครับ
https://snasui.com/viewtopic.php?t=411
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Thu Jul 14, 2022 3:37 pm
by March201711
อาจารย์คะ ลองเพิ่มปรับ code แล้ว ก็ยังใช้ไม่ได้น่ะค่ะ ไม่ทราบว่า code ผิดตรงไหนหรือเปล่าคะ
Code: Select all
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Me.Range("i18:i38,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
End If
If Me.Cells(Target.Row, "h").Value = "Others…..Equipment (specific)" Then
MsgBox "Please fill Price/unit in column 'K'"
Me.Cells(Target.Row, "k").Activate
End If
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Thu Jul 14, 2022 6:12 pm
by snasui

Code ไม่ผิดแต่เขียนตรงกับสิ่งที่ต้องการหรือไม่นั้นจะต้องทราบได้เองครับ
Code ที่เขียนมาจะทำงานใน IF ทั้ง 2 ชุด ถ้าเข้าเงื่อนไขทุก IF ผลลัพธ์การเลือกเซลล์จะได้ตาม IF ชุดสุดท้ายครับ
กรุณาเขียนแจ้งมาในช่องความเห็นอย่างละเอียดว่าให้ทดสอบด้วยการคลิกเลือกเซลล์ใด ผลลัพธ์ที่ต้องการคืออะไร สิ่งที่ได้จากโปรแกรมคืออะไร จะได้เข้าถึงปัญหาโดยไวครับ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Thu Jul 14, 2022 8:03 pm
by March201711
ค่ะ
ถ้า cell g18 มีคำว่า others...Equipment (specific) แล้ววาง cellไว้ที่ i18 ให้ขึ้น pop up ว่า "Please fill others(description) in cell i18" และ ถ้า วาง cell ไว้ที่ k18 ให้ขึ้น pop up ว่า "Please fill Price/unit in cell k18" ค่ะ
จุดประสงค์คืออยากบังคับให้มีการเติมข้อมูลว่าเป็นสินทรัพย์ว่าเป็นอะไรนอกเหนือจาก สินทรัพย์ที่เลือกใน dropdown ที่ column g ค่ะ และ บังคับการเติมราคาสินทรัพย์นั้นว่าราคาเท่าไหร่ที่ column k ค่ะ เพราะบางครั้งเจ้าหน้าที่ชอบลืมกรอกชื่อสินทรัพย์ และ ราคา ค่ะ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Thu Jul 14, 2022 8:41 pm
by snasui

ควรจะกำหนดเสียก่อนว่าผู้ใช้เลือกเซลล์ใดแล้วให้โปรแกรมทำงานอย่างไร
ยกตัวอย่างเช่น ถ้าเลือกคอลัมน์ I ให้โปรแกรมทำงานกี่ขั้นตอน อะไรบ้าง ถ้าเลือกคอลัมน์ K ให้โปรแกรมทำงานกี่ขั้นตอน อะไรบ้าง นี่คือสิ่งจำเป็นที่จะต้องใช้ในการเขียนโปรแกรม
ปกติเพื่อไม่ให้เกิดความสับสน จะมีการกำหนดให้เลือกทำไปทีละขั้นตอน เช่นถ้าเลือกคอลัมน์ K จะไปเช็คคอลัมน์ I เสียก่อนว่ามีค่าตามที่กำหนดแล้วหรือไม่ ถ้าไม่มีให้คลิกเลือกคอลัมน์ I เพื่อให้ผู้ใช้เลือก และหากผู้ใช้คลิกเลือกคอลัมน์ I โปรแกรมก็จะเช็คไปยังคอลัมน G ว่ามีค่าที่กำหนดแล้วหรือไม่ ถ้าไม่มีก็จะไปเลือกคอลัมน์ G ให้ผู้ใช้เลือก เช่นนี้เป็นต้น
จากข้างบน สิ่งที่จะต้องตรวจสอบคือ ปัจจุบันผู้ใช้เลือกคอลัมน์ใด เมื่อเลือกคอลัมน์นั้นจะให้โปรแกรมตรวจสอบค่าใด แสดงผลอย่างไร ฯลฯ อันนี้คือแนวทาง
สำหรับการเขียนโปรแกรมเราจะเขียนกี่ชั้น ซับซ้อนแค่ไหนก็ได้ เพียงแต่ควรทำให้ง่ายต่อการใช้งานและเตือนไปทีละลำดับเพื่อให้สะดวกต่อผู้ใช้ครับ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Thu Jul 14, 2022 9:37 pm
by March201711
แล้วควรปรับ code ยังไงคะ ถ้ากรอก column i แล้ว พยายามปรับแล้วก็ไม่ขึ้นค่ะ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Thu Jul 14, 2022 9:45 pm
by snasui

กำหนดเงื่อนไขไว้อย่างไร เขียนไว้อย่างไร เขียนให้ตรวจสอบคอลัมน์ที่เลือกแล้วหรือไม่ แนบไฟล์ล่าสุดมาด้วย
กรุณาอธิบายแต่ละลำดับมาอย่างละเอียด อ้างอิงให้ถึงตำแหน่งเซลล์ จะได้แนะนำได้ถูกต้องครับ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Fri Jul 15, 2022 10:49 am
by March201711
ทำที่อาจารย์บอก ถ้า column I (cell I18) มีข้อความแล้ว ลำดับต่อไปให้กรอกราคาที่ช่อง K18 ค่ะ แต่พอไปที่ cell K18 แล้วมี pop up แจ้ง
"Please fill Others(description) in column 'I " และพอกด ok cell กลับไปที่ column I เหมือนเดิมค่ะ ต้องปรับ code ยังไงคะ
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,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
End If
If Me.Cells(Target.Row, "i").Value = "Others…..Equipment (specific)" Then
MsgBox "Please fill Price/unit in column 'K'"
Me.Cells(Target.Row, "k").Activate
End If
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Fri Jul 15, 2022 11:23 am
by snasui
March201711 wrote: Fri Jul 15, 2022 10:49 am
ทำที่อาจารย์บอก ถ้า column I (cell I18) มีข้อความแล้ว ลำดับต่อไปให้กรอกราคาที่ช่อง K18 ค่ะ แต่พอไปที่ cell K18 แล้วมี pop up แจ้ง
"Please fill Others(description) in column 'I " และพอกด ok cell กลับไปที่ column I เหมือนเดิมค่ะ ต้องปรับ code ยังไงคะ
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,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
End If
If Me.Cells(Target.Row, "i").Value = "Others…..Equipment (specific)" Then
MsgBox "Please fill Price/unit in column 'K'"
Me.Cells(Target.Row, "k").Activate
End If

จากสิ่งที่อธิบายมานี้
เริ่มคลิกที่เซลล์ไหน ควรแจ้งมาด้วยเสมอครับ
จาก Code
Code: Select all
'Other code
If Me.Cells(Target.Row, "i").Value = "Others…..Equipment (specific)" Then
MsgBox "Please fill Price/unit in column 'K'"
Me.Cells(Target.Row, "k").Activate
End If
'Other code
ความหมายคือ ไม่ว่าจะคลิกในเซลล์ใดในช่วง i18:i38,k18:k38 ก็ตาม โปรแกรมจะไปตรวจสอบค่าในคอลัมน์ I บรรทัดเดียวกับเซลล์ที่คลิก ว่ามีค่าเป็น "Others…..Equipment (specific)" หรือไม่ ถ้าใช่จะขึ้นข้อความ "Please fill Price/unit in column 'K'" และเลือก K18 เอาไว้
ปัจจุบันค่าใน I18 คือ test จึงไม่เข้าเงื่อนไขนี้ เมื่อไม่เข้าเงื่อนไขก็จะไม่เลือก K18 เอาไว้ ส่วนนีจำเป็นต้องทำความเข้าใจครับ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Fri Jul 15, 2022 1:50 pm
by March201711
ค่ะ ตัองเปลี่ยนเงื่อนไขใหม่ โดยให้ column j เป็นสูตร ถ้า เป็น 1 ให้ขึ้น pop up ที่ cell K18 เป็น
"Please fill Price/unit in column 'K'" แต่พอไปที่ cell K แล้วเข้าเงื่อนไข แต่ pop up เป็น "Please fill Others(description) in column 'I'" ก่อน
อยากให้ pop up เป็น "Please fill Price/unit in 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
End If
If Me.Cells(Target.Row, "j").Value = "1" Then
MsgBox "Please fill Price/unit in column 'K'"
Me.Cells(Target.Row, "k").Activate
End If
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Fri Jul 15, 2022 2:33 pm
by snasui

ไม่มีอะไรผิดครับ Code ทำตามที่เขียนไว้ทุกประการ
If ตัวแรก ตรวจสอบคอลัมน์ G เมื่อเข้าเงื่อนไขก็จะทำงานตามที่เขียนไว้ If ถัดมาก็เข้าเงื่อนไขเช่นกัน จึงมี Message Box ขึ้น 2 ครั้งและมีการเลือกเซลล์ให้ทั้งสองครั้ง
March201711 wrote: Fri Jul 15, 2022 1:50 pm
อยากให้ pop up เป็น "Please fill Price/unit in column 'K'" เลย
ก็ต้องไม่ตรวจสอบคอลัมน์ G จะลบทิ้งหรือ Mark ไว้เป็น Comment ก็แล้วแต่สะดวก อันนี้เป็นแค่ตัวอย่าง ในการทำงานจริงก็ต้องออกแบบมาว่าให้ตรวจสอบหรือไม่ แบบไหน อย่างไร
กรุณาอ่านทบทวนที่ผมตอบไปแล้วทั้งหมดทุกโพสต์ ไม่เข้าใจส่วนใดสามารถถามเพิ่มเติมได้ ไม่เช่นนั้นไม่สามารถบรรลุวัตถุประสงค์ในการทำงานนี้ได้เพราะที่ผ่านมาถือว่ายังไม่เข้าใจวิธีการกำหนดเงื่อนไขครับ
Re: pop up แจ้งเตือนให้ลงรายการตามcell ที่ High light สีส้ม
Posted: Fri Jul 15, 2022 3:46 pm
by March201711
ถ้าจะให้เข้าเงื่อนไข if ....and ทั้งสอง เงื่อนไข ต้องใช้ code อะไรคะ