PDA

View Full Version : สั่งให้มาโครทำงานโดยอาศัยความเคลื่อนไหวใน Cell



Blue planet
10 Jun 2008, 09:57
เรียน
ทุกครั้งที่ บริเวณ Cell ที่กำหนดไว้มีการเปลี่ยนแปลง จะมีการสั่งให้ Macro ทำงาน 1รอบ โดยไม่ต้องสร้างและกดปุ่ม Macro สามารถกำหนดโดยใช้คำสั่งอะไรได้บ้างครับ
ขอบคุณครับ

สมเกียรติ
10 Jun 2008, 10:22
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [MyData]) Is Nothing Then
If Target > 0 And IsNumeric(Target) Then MsgBox "Done"
End If
End Sub


If Not Intersect(Target, [MyData]) Is Nothing Then
ใช้ตรวจสอบว่าเซลล์ที่ต้องการนั้นอยู่ในพื้นที่ตารางที่ตั้งชื่อว่า MyData หรือไม่

If Target > 0 And IsNumeric(Target) Then
ถ้าค่าที่พิมพ์ลงไปเป็นตัวเลขมากกว่า 0 ให้ทำงานตามต้องการครับ

สิ่งที่ต้องระวัง คือ ถ้าสิ่งที่ต้องการต่อไปนั้นเกิดขึ้นใน MyData ซ้ำลงไปอีก จะทำให้เกิดการทำงานซ้ำเป็น loop ไม่รู้จบ เราจะเห็นเซลล์กระพริบๆๆๆๆ จนกระทั่งหน่วยความจำรับไม่ไหวก็จะแสดงคำเตือน error ให้เห็น ต้องแก้ไขโดยใช้คำสั่งหยุดการใช้ event ในช่วงนั้นแบบนี้ครับ

Application.EnableEvents = False
....รหัสที่ต้องการในช่วงนั้น
Application.EnableEvents = True

Blue planet
13 Jun 2008, 07:43
ขอยคุณมากครับ