Page 1 of 1

รบกวนผู้รู้แนะนำสูตร vba สำหรับการเก็บค่าเก่าของ cell หนึ่ง ก่อนที่ค่าจะถูก update เป็นค่าใหม่

Posted: Mon Feb 09, 2015 12:34 pm
by devouring
ผมมีข้อมูลของ worksheet อยู่ชุดหนึ่งซึ่ง cell แต่ละ cell ใน worksheet นี้จะถูก update ตัวเองตลอดเวลา ซึ่งผมต้องการให้เมื่อทุกครั้งที่ cell ใดก็ตามที่เกิดการเปลี่ยนแปลงเกิดขึ้น จะให้โปรแกรมนำข้อมูลก่อนเปลี่ยนแปลงของ cell นั้น มาเทียบกันกับ ข้อมูลใหม่ของ cell เดียวกัน

ไม่ทราบว่าต้องเขียน VBA ว่าอย่างไรครับ ผมพยายามแล้วไม่สามารถทำได้เลย รบกวนผู้รู้แนะนำด้วยครับ

Re: รบกวนผู้รู้แนะนำสูตร vba สำหรับการเก็บค่าเก่าของ cell หนึ่ง ก่อนที่ค่าจะถูก update เป็นค่าใหม่

Posted: Mon Feb 09, 2015 1:44 pm
by bank9597
ลองบันทึกมาโครแบบง่ายๆมาดูครับ เดี๋ยวจะช่วยดูให้อีกทางครับ

Re: รบกวนผู้รู้แนะนำสูตร vba สำหรับการเก็บค่าเก่าของ cell หนึ่ง ก่อนที่ค่าจะถูก update เป็นค่าใหม่

Posted: Mon Feb 09, 2015 5:14 pm
by menem
Dim OldVal


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
OldVal = Target.Value
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox (" Old Value is " & OldVal & " new is " & Target.Value)


End Sub


อธิบายเพิ่มเติมครับ :
หลักการคือ เราถือว่าก่อนการเปลี่ยนค่าในเซลใด ๆ จะต้องมีการ "เลือก" เซลนั้น ๆ ก่อน
ดังนั้น Event : SelectionChange คือการอ่านค่าของเซลที่ถูกเลือกมาเก็บไว้ก่อนนั่นเอง

ในกรณีที่ใช้ VBA อัพเดทค่า และ/หรือ ใช้สูตร อาจจะให้ผลที่ไม่เป็นไปตามต้องการ

Re: รบกวนผู้รู้แนะนำสูตร vba สำหรับการเก็บค่าเก่าของ cell หนึ่ง ก่อนที่ค่าจะถูก update เป็นค่าใหม่

Posted: Mon Feb 09, 2015 5:48 pm
by snasui
menem wrote:Dim OldVal


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
OldVal = Target.Value
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox (" Old Value is " & OldVal & " new is " & Target.Value)


End Sub


อธิบายเพิ่มเติมครับ :
หลักการคือ เราถือว่าก่อนการเปลี่ยนค่าในเซลใด ๆ จะต้องมีการ "เลือก" เซลนั้น ๆ ก่อน
ดังนั้น Event : SelectionChange คือการอ่านค่าของเซลที่ถูกเลือกมาเก็บไว้ก่อนนั่นเอง

ในกรณีที่ใช้ VBA อัพเดทค่า และ/หรือ ใช้สูตร อาจจะให้ผลที่ไม่เป็นไปตามต้องการ
:D กรณีคำถามเกี่ยวกับ VBA ต้องเป็นไปตามกฎการใช้บอร์ดข้อ 5 ด้านบน เพื่อความเสมอภาคกันของสมาชิก คือต้องเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ

การถามตอบด้วย Code ควรให้แสดงเป็น Code จะได้สะดวกในการอ่านและ Copy ไปทดสอบ ดูตัวอย่างได้จากที่นี่ครับ viewtopic.php?f=6&t=1187

Re: รบกวนผู้รู้แนะนำสูตร vba สำหรับการเก็บค่าเก่าของ cell หนึ่ง ก่อนที่ค่าจะถูก update เป็นค่าใหม่

Posted: Tue Feb 10, 2015 7:48 pm
by menem
ขอโทษด้วยครับ