Page 1 of 1
Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Wed Dec 04, 2019 10:12 am
by wisitsakbenz
เรียน สอบถามอาจารย์ผมเขียน macro คำนวณค่าอาหารต่าง ๆ แต่จะต้องกด Save ก่อนค่าถึงจะโชว์ อยากให้ใส่ค่าตามรายละเอียดด้านล่าง แล้วโชว์เลยก่อนจะ save สามารถทำได้หรือไม่ครับ
วิธีคือ
1. กรอกค่า ICU หรือ Ward (D4 หรือ D5 อย่างใดอย่างหนึ่ง) = 70,000 หรืออาจเป็นค่าอื่น
2. ใส่ค่า ICU หรือ Ward ว่ากี่วัน (H4 หรือ H5 อย่างใดอย่างหนึ่ง) = 1 หรืออาจจะเป็น 2, 3, ...
อยากให้คำนวณผลออกมาเลย
ถ้าเป็น ICU จะคำนวณผลลัพทธ์จะเท่ากับ
Room ค่าห้อง = 5200
Food ค่าอาหาร = 1100
Inpatient Hospital Service ค่าบริการผู้ป่วยใน = 1400
Nursing ค่าบริการพยาบาล = 2400
Medication & Supplies ยาและเวชภัณฑ์ = 59900
ถ้าเป็น Ward จะคำนวณผลลัพทธ์จะเท่ากับ
Room ค่าห้อง = 7700
Food ค่าอาหาร = 1100
Inpatient Hospital Service ค่าบริการผู้ป่วยใน = 1800
Nursing ค่าบริการพยาบาล = 4900
Medication & Supplies ยาและเวชภัณฑ์ = 54500
ขอบคุณมากครับอาจารย์
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Wed Dec 04, 2019 11:32 am
by parakorn
ยังไม่ค่อยเข้าใจครับ
ผลลัพท์ที่ต้องการคือช่องไหนครับ
แล้วถ้ามีการกรอกทั้งสองช่องล่ะครับ ฝั่งใดฝั่งหนึ่ง หรือ ทั้งสองฝั่งล่ะครับ
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Wed Dec 04, 2019 2:01 pm
by wisitsakbenz
ผลลัพธ์คือ ช่อง D7 - D11 ครับอาจารย์ parakorn
input คือ D4 หรือ D5 (เลือกกรอกช่องใดช่องหนึ่ง) และ H4 หรือ H5 (เลือกกรอกช่องใดช่องหนึ่ง)
ถ้าเลือก D4 จะต้องกรอก H4
ถ้าเลือก D5 จะต้องกรอก H5 ครับ
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Wed Dec 04, 2019 3:20 pm
by parakorn
ประมาณนี้หรือเปล่าครับ
D7 =IF(AND(ICU="",Ward=""),"",IF(ICU<>"",H15*tbCalICU,H22*tbCalWard)) Enter+Copy ลงไปถึง D10
D11 =IF(AND(ICU="",Ward=""),"",IF(ICU<>"",ICU-SUM(D7:D10),Ward-SUM(E22:E25))) Enter
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Wed Dec 04, 2019 4:19 pm
by wisitsakbenz
สามารถเขียนเป็น Code Macro ได้หรือไม่ครับ
เพราะถ้าทำการเคลียร์ค่า หรือ clear ข้อมูล สูตรจะหายไปด้วยครับ
ขอบคุณครับ
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Wed Dec 04, 2019 4:50 pm
by parakorn
โค้ดสำหรับใส่สูตรใหม่ ประมาณนี้ครับ
Code: Select all
'other code
Range("D7:D10").Select
Selection.FormulaR1C1 = _
"=IF(AND(ICU="""",Ward=""""),"""",IF(ICU<>"""",R[8]C[4]*tbCalICU,R[15]C[4]*tbCalWard))"
Range("D11").Select
Selection.FormulaR1C1 = _
"=IF(AND(ICU="""",Ward=""""),"""",IF(ICU<>"""",ICU-SUM(R[-4]C:R[-1]C),Ward-SUM(R[11]C[1]:R[14]C[1])))"
'other code
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Thu Dec 05, 2019 9:04 am
by wisitsakbenz
อาจารย์ parakorn ครับ ขอสอบถามเพิ่มเติมครับ
ตารางนี้มีการกำหนดค่าตรงไหนหรือไม่ครับ พอเอาไปใช้งานจริง มันไม่ดึงตัวเลขมาให้ครับ
อาจารย์ช่วยอธิบาย Code ส่วนนี้หน่อยนะครับ
=IF(AND(ICU="""",Ward=""""),"""",IF(ICU<>"""",R[8]C[4]*tbCalICU,R[15]C[4]*tbCalWard))"
=IF(AND(ICU="""",Ward=""""),"""",IF(ICU<>"""",ICU-SUM(R[-4]C:R[-1]C),Ward-SUM(R[53]C[1]:R[57]C[1])))"
ขอบคุณครับ
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Thu Dec 05, 2019 9:30 am
by snasui

ตัวอย่างการออกแบบให้สะดวกต่อการใช้งานตามไฟล์แนบครับ
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Thu Dec 05, 2019 9:38 am
by wisitsakbenz
ขอบคุณอาจารย์ snasui ครับ ทางผมอยากได้แบบเดิมมากกว่าครับ (ทางผู้ใช้งานต้องการครับ)
แบบอาจารย์ snasui ถ้าทำการเคลียร์ค่า หรือ clear ข้อมูล สูตรจะหายไปด้วยครับ
อาจารย์แนะนำได้หรือไม่ครับ ว่า Code นี้หมายถึงอะไร
=IF(AND(ICU="""",Ward=""""),"""",IF(ICU<>"""",R[8]C[4]*tbCalICU,R[15]C[4]*tbCalWard))"
=IF(AND(ICU="""",Ward=""""),"""",IF(ICU<>"""",ICU-SUM(R[-4]C:R[-1]C),Ward-SUM(R[53]C[1]:R[57]C[1])))"
ขอบคุณครับ
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Thu Dec 05, 2019 10:09 am
by snasui
wisitsakbenz wrote: Thu Dec 05, 2019 9:38 am
แบบอาจารย์ snasui ถ้าทำการเคลียร์ค่า หรือ clear ข้อมูล สูตรจะหายไปด้วยครับ

เราจะไม่ Clear ค่าในเซลล์ที่เขียนสูตรครับ
wisitsakbenz wrote: Thu Dec 05, 2019 9:38 am
ทางผมอยากได้แบบเดิมมากกว่าครับ (ทางผู้ใช้งานต้องการครับ)

ความคิดเห็นผมคือ ถ้าเสนอวิธีอื่นที่ไม่สับสน กรอกง่าย เข้าใจง่าย และยอมรับได้ก็จะดีกับทั้งสองฝ่าย ถ้าหากเราแนะนำไปแล้วแต่ผู้ใช้งานยังยืนยันว่าจะใช้แบบเดิมก็ไม่ว่ากัน
ของเดิมอาจจะพลั้งเผลอหรือจะตั้งใจก็ตาม ถ้าหากกรอกหมดทุกช่องโปรแกรมจะพิจารณาอย่างไรครับ
wisitsakbenz wrote: Thu Dec 05, 2019 9:38 am
อาจารย์แนะนำได้หรือไม่ครับ ว่า Code นี้หมายถึงอะไร
=IF(AND(ICU="""",Ward=""""),"""",IF(ICU<>"""",R[8]C[4]*tbCalICU,R[15]C[4]*tbCalWard))"
=IF(AND(ICU="""",Ward=""""),"""",IF(ICU<>"""",ICU-SUM(R[-4]C:R[-1]C),Ward-SUM(R[53]C[1]:R[57]C[1])))"
สูตรนี้เป็นการอ้างแบบ R1C1 แทน A1 คือเป็นการอ้างแบบค่าบรรทัดและคอลัมน์แทนการอ้างแบบ Reference ที่เป็นการอ้างอักษรของคอลัมน์ตามด้วยค่าบรรทัด
ยกตัวอย่างเช่น
R[15]C[4] หมายถึง เซลล์ในบรรทัดที่ 15 และ คอลัมน์ที่ 14 นับจากเซลล์ปัจจุบัน
R1C1 หมายถึง เซลล์ในบรรทัดที่ 1 คอลัมน์ที่ 1
R[-1]C[8] หมายถึง เซลล์ในบรรทัดก่อนเซลล์ปัจจุบันและคอลัมน์ที่ 8 นับจากเซลล์ปัจจุบัน
เป็นต้น
Re: Macro : ใส่ค่าตามรายละเอียด แล้วโชว์ค่าเลยก่อนจะ save สามารถทำได้หรือไม่ครับ
Posted: Thu Dec 05, 2019 10:44 am
by wisitsakbenz
ได้แล้วครับอาจารย์ snasui ขอบคุณอาจารย์ทั้ง 2 มากเลยครับ
ได้ความรู้มากเลยครับ