Page 1 of 1
VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 2:42 pm
by yangkodza
01.GIF
Code: Select all
Sub Macro01()
Application.Goto Reference:="data01" 'แก้ส่วนนี้
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, _
Formula1:="=$E$7/2" 'แก้ส่วนนี้
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16776961
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = True
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="=$E$7" 'แก้ส่วนนี้
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16711681
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = True
End Sub
จาก VBA ด้านบน
ผมต้องการทำซ้ำไปทางขวาอีก 19 ครั้ง รวมต้นฉบับ คือ 20 ครั้ง
รวบกวนช่วยปรับสูตรให้ทีครับ
ในทีนี้ผมได้สร้างกล่องชื่อข้อมูล data01 - data20 ไว้แล้วครับ
test.xls
Re: VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 3:04 pm
by snasui
ลักษณะงานเป็นการกำหนด Conditional Formatting และมีลักษณะเดียวกันทุกคอลัมน์ ให้ทำทุกคอลัมน์พร้อมกันได้เลยไม่ต้อง Loop ครับ หรือติดขัดตรงไหน อย่างไร ช่วยอธิบายมาอีกรอบครับ
Re: VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 3:10 pm
by yangkodza
ผมต้องทำทีละคอลัมน์ครับ ทำพร้อมกันไม่ได้
ต้องคอยเปลี่ยน
Application.Goto Reference:="data01"
Formula1:="=$E$7/2"
Formula1:="=$E$7"
แล้วมันจะทำให้ VBA ยาวครับ
Re: VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 3:19 pm
by snasui
ช่วยอธิบายให้เข้าใจว่าเหตุใดจึงทำพร้อมกันไม่ได้
Statement Goto ไม่จำเป็นต้องใช้ค่านั้น และไม่ต้องใช้ Goto ก็ย่อมได้ครับ
ตัวอย่างการกำหนดพร้อมกันทีเดียวครับ
Code: Select all
Sub Macro16()
Application.Goto Reference:=Range("data01").Resize(, 20) 'á¡éÊèǹ¹Õé
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, _
Formula1:="=E$7/2" 'á¡éÊèǹ¹Õé
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16776961
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = True
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="=E$7" 'á¡éÊèǹ¹Õé
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16711681
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = True
End Sub
Re: VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 3:31 pm
by yangkodza
สาเหตุที่ใช้ Goto เพราะว่า ผมตั้งชื่อไว้ (คิดว่าง่ายในการอิางอิง)
แล้วผมใช้การบันทึก VBA เอาครับ
ส่วนเรื่องที่ว่าทำพร้อมกันไม่ได้
อาจเป็นเพราะว่าผมเองยังไม่เข้าใจคำสั่งไม่ดีพอ
คะแนนเต็มด้านบนมีการแปรผัน อาจไม่ใช่ 10 คะแนนเสมอไปในแต่ละช่องของการเก็บคะแนน
ไม่งั้นผมก็หักดิบ นั่งทำทีละคอลัมน์ โดยการเปลี่ยนค่า 3 แห่ง ไล่กันไปเรื่อยๆเอาครับ
Re: VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 3:39 pm
by yangkodza
อยากปรับให้มองค่า Formula1:="=E$7" ของแค่ละคอลัมน์
ตั้งแต่คอลัมน์ E:X ด้วยครับ
Re: VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 3:46 pm
by snasui
ลองแนบไฟล์ที่ปรับ Code ตามที่ผมตอบไปแล้ว พร้อมแสดงตัวอย่างที่มองเห็นได้เด่นชัดว่าเซลล์ใดต้องการให้แสดงผลเป็นอย่างไร ปัจจุบันแสดงค่าผิดพลาดอย่างไร จะได้สะดวกในการทำความเข้าใจครับ
Re: VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 4:00 pm
by yangkodza
snasui wrote: ลองแนบไฟล์ที่ปรับ Code ตามที่ผมตอบไปแล้ว พร้อมแสดงตัวอย่างที่มองเห็นได้เด่นชัดว่าเซลล์ใดต้องการให้แสดงผลเป็นอย่างไร ปัจจุบันแสดงค่าผิดพลาดอย่างไร จะได้สะดวกในการทำความเข้าใจครับ
อาจารย์ครับ Code ที่อาจารย์ให้มา ทำงานได้ตามต้องการแล้วครับ (ผมหลงเอง มัวแต่มอง Formula1:="=E$7")
แต่ที่ผมแปลกใจคือ ทำไมเราอ้างอิง Formula1:="=E$7" แต่ถึงมีผลถึง X7 ครับ
รบกวนชี้แนะด้วยครับ
Re: VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 4:02 pm
by snasui
ผมกำหนดให้เลือกทีเดียวทุกคอลัมน์ที่ต้องการใช้งาน นั่นคือ
Application.Goto Reference:=Range("data01").Resize(, 20)
และสูตรที่เราเขียนคือ =E$7 เป็นการ Lock เฉพาะบรรทัด ไม่ได้ Lock คอลัมน์ จึงมีผลกับทุกคอลัมน์ที่เราเลือก ไม่ใช่เฉพาะคอลัมน์ E ครับ
Re: VBA ปรับแต่งเซลล์ตามเงื่อนไขที่กำหนด
Posted: Sun Apr 30, 2017 4:08 pm
by yangkodza
อ้อ เข้าใจแล้วครับ
ขอบคุณมากครับ