:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

การใช้คำสั่ง Worksheet_Change

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
nettory
Member
Member
Posts: 10
Joined: Sun Dec 26, 2021 10:56 am
Excel Ver: 2013

การใช้คำสั่ง Worksheet_Change

#1

Post by nettory »

ผมต้องการเซลล์ที่ใช้คำสั่ง "Worksheet_Change" ระบุไว้ เมื่อรับค่าจากเซลล์อื่นมาแล้วให้เรียกมาโครขึ้นมาทำงานครับ..
ถ้าเป็นการใส่ข้อมูลไปที่เซลล์ตรงๆ สามารถทำงานได้ปกติครับ..
แต่ถ้ารับค่าจากเซลล์อื่นมาจะไม่ได้ เช่น เซลล์ "B6" ใช้สูตร "=$B$3" เพื่อรับค่าจาก "B3" แบบนั้นจะไม่ได้เหมือนเราใส่ค่าตรงๆ ที่เซลล์ครับ..
มีวิธีทำแบบนั้้้นไหมครับให้มีผลแอคชั่นเหมือนเราใส่ข้อมมูลหรือคลิ๊กหรือเอ็นตอร์..

รบกวนและขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้คำสั่ง Worksheet_Change

#2

Post by snasui »

:D เปลี่ยนจาก B6 เป็น B3 แทนครับ

จะได้เป็น If Target.Address = "$B$3" Then
nettory
Member
Member
Posts: 10
Joined: Sun Dec 26, 2021 10:56 am
Excel Ver: 2013

Re: การใช้คำสั่ง Worksheet_Change

#3

Post by nettory »

snasui wrote: Thu Jun 22, 2023 10:25 am :D เปลี่ยนจาก B6 เป็น B3 แทนครับ

จะได้เป็น If Target.Address = "$B$3" Then
ยังไม่ได้ครับอาจารย์..
ผมเปลี่ยนแล้วจาก B6 เป็น B3 แล้วครับ..
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้คำสั่ง Worksheet_Change

#4

Post by snasui »

:D ทุกครั้งที่มีการคีย์ค่าใน B3 โปรแกรมจะต้องทำงานที่ Change Event ถ้าเปลี่ยนแล้วไม่ได้แสดงว่าต้องไป EnableEvent ใหม่ครับ

วิธีการคือ เข้า VBE (Visual Basic Editor) โดยกดแป้น Alt+F11 > กดแป้น Ctrl+G เพื่อเปิดหน้าต่าง Immediate Windows > คีย์ Statement application.EnableEvents = true > Enter

จากนั้นทดสอบเปลี่ยนค่าใน B3 ใหม่ หากยังไม่ได้อีกแสดงว่าโปรแกรม Excel มีปัญหาไม่สามารถดักจัด Event ได้ครับ
nettory
Member
Member
Posts: 10
Joined: Sun Dec 26, 2021 10:56 am
Excel Ver: 2013

Re: การใช้คำสั่ง Worksheet_Change

#5

Post by nettory »

snasui wrote: Thu Jun 22, 2023 3:10 pm :D ทุกครั้งที่มีการคีย์ค่าใน B3 โปรแกรมจะต้องทำงานที่ Change Event ถ้าเปลี่ยนแล้วไม่ได้แสดงว่าต้องไป EnableEvent ใหม่ครับ

วิธีการคือ เข้า VBE (Visual Basic Editor) โดยกดแป้น Alt+F11 > กดแป้น Ctrl+G เพื่อเปิดหน้าต่าง Immediate Windows > คีย์ Statement application.EnableEvents = true > Enter

จากนั้นทดสอบเปลี่ยนค่าใน B3 ใหม่ หากยังไม่ได้อีกแสดงว่าโปรแกรม Excel มีปัญหาไม่สามารถดักจัด Event ได้ครับ
ถ้าเราคีย์ลงไปตรงๆ B3 สามารถเรียกมาโครได้ปกติครับ..
แต่ถ้าไม่ต้องการคัย์ลงไปตรงๆ ที่ B3 แล้วใส่สูตที่ B3 เป็น =A3 แล้วเราคีย์ข้อมูล A3 ตัว B3 จะมีค่าเเหมือน A3 แต่แบบนี้ไม่สามารถเรียกมาโครได้ครับ เหมือนการทำงานมันต้องแอดชั่นที่เซลล์ตรงๆ แบบกดเอนเตอร์หรือกดคลิ๊กที่เซลล์นั้นๆ ถึงค่าจะเปลี่ยนใน B3 แต่ไม่ได้มีแอคชั่นกับเเซลล์มันจะไม่ทำงานน่ะครับ..
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้คำสั่ง Worksheet_Change

#6

Post by snasui »

:D เราจะใช้การดักจับที่ A3 แทนครับ

คีย์ที่เซลล์ไหนก็ต้องดักจับที่เซลล์นั้นถึงจะเรียกว่า Change Event เราไม่มีการดักจับค่าที่ Link มาจากเซลล์อื่น ใช้การดักที่ต้นทางเท่านั้น ไม่เช่นนั้นต้องใช้วิธีอื่นแทนครับ
nettory
Member
Member
Posts: 10
Joined: Sun Dec 26, 2021 10:56 am
Excel Ver: 2013

Re: การใช้คำสั่ง Worksheet_Change

#7

Post by nettory »

snasui wrote: Fri Jun 23, 2023 11:50 am :D เราจะใช้การดักจับที่ A3 แทนครับ

คีย์ที่เซลล์ไหนก็ต้องดักจับที่เซลล์นั้นถึงจะเรียกว่า Change Event เราไม่มีการดักจับค่าที่ Link มาจากเซลล์อื่น ใช้การดักที่ต้นทางเท่านั้น ไม่เช่นนั้นต้องใช้วิธีอื่นแทนครับ
อาจารย์พอจะแนะนำแนวทางอื่นได้ไหมครับ เพราะผมจะให้ส่งไลน์แจ้งเวลาที่ api อัพเดตครับ ช่องที่กำหนดผมใช้การรับค่าจาก api มันเปลี่ยนแปลงเสมอแต่ไม่ได้คีย์ข้อมูลลงไปตรงๆ ไม่มีแอคชั่นครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้คำสั่ง Worksheet_Change

#8

Post by snasui »

:D ลองใช้ Calculate Event ดูครับ ==> https://learn.microsoft.com/en-us/offic ... %28even%29
nettory
Member
Member
Posts: 10
Joined: Sun Dec 26, 2021 10:56 am
Excel Ver: 2013

Re: การใช้คำสั่ง Worksheet_Change

#9

Post by nettory »

snasui wrote: Fri Jun 23, 2023 1:01 pm :D ลองใช้ Calculate Event ดูครับ ==> https://learn.microsoft.com/en-us/offic ... %28even%29
อันนี้ลองแล้วมันเรียกการทำงานทุกอย่างเลยครับ มันดีนะ แต่มันระบุเจาะจงเซลล์ไม่ได้ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้คำสั่ง Worksheet_Change

#10

Post by snasui »

:D ต้องใช้การประยุกต์เข้าไปช่วย โดยเก็บค่าคงที่ของเซลล์ปลายทาง (เซลล์ที่ Link มาจากต้นทางอีกทอด) สมมุติว่าเป็นเซลล์ B3 เอาไว้ที่เซลล์ใดเซลล์หนึ่ง เช่น D1 โดยภายใน Calculate Event ให้ตรวจสอบว่า ค่าหลังจาก Calculate แล้วค่าใน B3 เท่ากับค่าคงที่ใน D1 หรือไม่ ถ้าไม่เท่าต้องทำ 2 อย่าง คือ
  1. รันคำสั่งที่่ต้องการ
  2. เก็บค่าเซลล์ปลายทางไปวางไว้ที่เซลล์ D1
ถ้าเท่าก็ไม่ต้องรันคำสั่ง เช่นนี้เป็นต้นครับ
Post Reply