Note: The other languages of the website are Google-translated. Back to English
English English

วิธีเรียกใช้แมโครเมื่อค่าของเซลล์เปลี่ยนแปลงใน Excel

โดยปกติใน Excel เราสามารถกดปุ่ม F5 หรือปุ่ม Run เพื่อรันโค้ด VBA แต่คุณเคยพยายามเรียกใช้รหัสแมโครเฉพาะเมื่อค่าของเซลล์เปลี่ยนแปลงหรือไม่? บทความนี้ฉันจะแนะนำเคล็ดลับง่ายๆในการจัดการกับงานนี้ใน Excel

เรียกใช้หรือเรียกแมโครเมื่อค่าของเซลล์เฉพาะเปลี่ยนแปลงด้วยรหัส VBA

เรียกใช้หรือเรียกมาโครเมื่อค่าของเซลล์ใด ๆ เปลี่ยนแปลงในช่วงด้วยรหัส VBA


ลูกศรสีฟ้าฟองขวา เรียกใช้หรือเรียกแมโครเมื่อค่าของเซลล์เฉพาะเปลี่ยนแปลงด้วยรหัส VBA

ในการเรียกใช้รหัสแมโครโดยการเปลี่ยนค่าเซลล์รหัส VBA ต่อไปนี้สามารถช่วยคุณได้โปรดทำดังนี้:

1. คลิกขวาที่แท็บแผ่นงานที่คุณต้องการเรียกใช้แมโครหากค่าของเซลล์เปลี่ยนแปลงจากนั้นเลือก ดูรหัส จากเมนูบริบทและในเปิด Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่างคัดลอกและวางรหัสต่อไปนี้ลงในโมดูลเปล่า:

รหัส VBA: เรียกใช้แมโครเมื่อค่าของเซลล์เปลี่ยนแปลง:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

doc เรียกใช้แมโครหากเซลล์เปลี่ยนแปลง 1

หมายเหตุ: ในโค้ดด้านบน A1 คือเซลล์เฉพาะที่คุณต้องการเรียกใช้โค้ดตาม มายมาโคร คือชื่อมาโครที่คุณต้องการเรียกใช้ โปรดเปลี่ยนตามความต้องการของคุณ

2. จากนั้นบันทึกและปิดหน้าต่างรหัสตอนนี้เมื่อคุณป้อนหรือเปลี่ยนค่าในเซลล์ A1 รหัสเฉพาะจะถูกทริกเกอร์พร้อมกัน


ลูกศรสีฟ้าฟองขวา เรียกใช้หรือเรียกมาโครเมื่อค่าของเซลล์ใด ๆ เปลี่ยนแปลงในช่วงด้วยรหัส VBA

หากคุณต้องการเรียกใช้หรือทริกเกอร์มาโครเมื่อค่าของเซลล์ใด ๆ เปลี่ยนแปลงในช่วงของเซลล์รหัสต่อไปนี้อาจช่วยคุณได้

1. คลิกขวาที่แท็บแผ่นงานที่คุณต้องการเรียกใช้แมโครหากค่าของเซลล์เปลี่ยนแปลงจากนั้นเลือก ดูรหัส จากเมนูบริบทและในเปิด Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่างคัดลอกและวางรหัสต่อไปนี้ลงในโมดูลเปล่า:

รหัส VBA: เรียกใช้แมโครเมื่อค่าของเซลล์ใด ๆ เปลี่ยนแปลงในช่วง:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

doc เรียกใช้แมโครหากเซลล์เปลี่ยนแปลง 2

หมายเหตุ: ในโค้ดด้านบน A1: B100 คือเซลล์เฉพาะที่คุณต้องการเรียกใช้โค้ดตาม มายมาโคร คือชื่อมาโครที่คุณต้องการเรียกใช้ โปรดเปลี่ยนตามความต้องการของคุณ

2. จากนั้นบันทึกและปิดหน้าต่างรหัสตอนนี้เมื่อคุณป้อนหรือเปลี่ยนค่าในเซลล์ใดก็ได้ของ A1: B100 รหัสเฉพาะจะถูกดำเนินการพร้อมกัน


ลบมาโครทั้งหมดออกจากสมุดงานหลายเล่ม

Kutools สำหรับ Excel's Batch ลบมาโครทั้งหมด ยูทิลิตี้สามารถช่วยคุณลบมาโครทั้งหมดออกจากสมุดงานหลายเล่มได้ตามที่คุณต้องการ ดาวน์โหลดและทดลองใช้ Kutools for Excel ฟรีทันที!

Kutools สำหรับ Excel: ด้วย Add-in ของ Excel ที่มีประโยชน์มากกว่า 300 รายการให้ทดลองใช้ฟรีโดยไม่มีข้อ จำกัด ใน 30 วัน ดาวน์โหลดและทดลองใช้ฟรีทันที!


บทความที่เกี่ยวข้อง:

วิธีเรียกใช้มาโครโดยอัตโนมัติก่อนพิมพ์ใน Excel

วิธีเรียกใช้แมโครตามค่าเซลล์ใน Excel

วิธีเรียกใช้แมโครตามค่าที่เลือกจากรายการแบบหล่นลงใน Excel

วิธีเรียกใช้แมโครโดยคลิกไฮเปอร์ลิงก์ใน Excel

วิธีเรียกใช้แมโครเมื่อแผ่นงานถูกเลือกจากสมุดงาน


เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel ช่วยแก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office / Excel 2007-2019 และ 365 รองรับทุกภาษา ใช้งานง่ายในองค์กรหรือองค์กรของคุณ ทดลองใช้ฟรี 30 วันเต็ม รับประกันคืนเงิน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มผลผลิตของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (17)
ยังไม่มีการให้คะแนน เป็นคนแรกที่ให้คะแนน!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
โมดูลนี้ใช้ไม่ได้สำหรับฉัน มันบอกว่าเมื่อค่าของเซลล์เปลี่ยนแปลง มันจะรันโค้ด ฉันพบว่าฉันพิมพ์ลงในเซลล์ได้หรือไม่ แต่ถ้าค่าของเซลล์มีการเปลี่ยนแปลงโดยสูตร เช่น Counta ค่านั้นจะไม่ทำงาน คุณมีวิธีแก้ปัญหาในการดำเนินการแมโครเมื่อ VALUE เปลี่ยนแปลงผ่านสูตรหรือไม่ ขอบคุณ Wayne
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ปัญหาเดียวกับเวย์น ความช่วยเหลือใด ๆ ที่ชื่นชมมาก! ขอบคุณรอนนี่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีทุกคน,

ใช่ โค้ดด้านบนจะใช้ได้เฉพาะเมื่อค่าของเซลล์เปลี่ยนแปลงด้วยตนเอง ถ้าคุณต้องการเรียกใช้โค้ดแมโครเฉพาะโดยอัตโนมัติเมื่อผลลัพธ์ของสูตรเปลี่ยนแปลงไปพร้อมกับเซลล์ที่สัมพันธ์กันเปลี่ยนแปลง โปรดไปที่บทความนี้:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
โปรดลองและหวังว่าคุณจะตอบกลับ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มันไม่ทำงาน... & ฉันกำลังเปลี่ยนค่าเซลล์ด้วยตนเอง มีการกำหนดค่าล่วงหน้าที่ต้องตั้งค่าหรือไม่?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ทดสอบสิ่งนี้ในขั้นตอนและใช้เป็นพารามิเตอร์


แผ่นงานย่อยส่วนตัว_เปลี่ยน (ByVal Target As Range)

MsgBox Target.Address & "-" และ Target.AddressLocal

ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ใช่ คำอธิบายบอกว่าควรทริกเกอร์เมื่อค่าเปลี่ยนแปลง แต่โค้ดที่สองบอกว่าเมื่อไม่มีค่า และโค้ดแรกจะไม่ทริกเกอร์เมื่อค่าเปลี่ยนแปลงเช่นกัน แต่ถ้าฉันกด F5 เมื่อดูโค้ด มันต้องการ เพื่อเรียก MyMacro แต่ดูเหมือนจะไม่ตอบสนองต่อการเปลี่ยนแปลงค่ามากเท่ากับการเปลี่ยนจากไม่มีอะไรเป็นอย่างอื่นหรือตรงกันข้าม
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สิ่งนี้ได้ผลเป็นครั้งแรกสำหรับฉันโดยใช้รายการตรวจสอบข้อมูลซึ่งแสดงข้อความตามการเลือกรายการ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ทำงานได้ดีสำหรับฉัน! ภาวะที่กลืนไม่เข้าคายไม่ออกของฉันคือฉันต้องการให้เป็นมาโครอ้างอิงแบบสัมพัทธ์และมีความแตกต่างระหว่างการกดปุ่ม Enter เพื่อบันทึกรายการและลบเพื่อล้างเซลล์
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เฮ้ รหัสที่มีประโยชน์ ฉันกำลังคิดว่าเป็นไปได้ไหมที่จะใส่วงแหวนรอบเซลล์ที่เปลี่ยนไปตามการเปลี่ยนแปลง? และรีเซ็ตวงกลมทุกวันจันทร์ ?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีเควิน
ไม่มีแนวคิดในการแก้ปัญหาของคุณ หากคุณมีวิธีแก้ไขปัญหาที่ดี โปรดแสดงความคิดเห็นที่นี่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มาโครที่คุณกำลังโทรหาคุณอยู่ที่ไหน ฉันมีของฉันในโฟลเดอร์โมดูล แต่เมื่อฉันใส่ค่าใด ๆ ในเซลล์ใด ๆ ของเวิร์กชีตฉันได้รับข้อผิดพลาดในการคอมไพล์ว่า:
ตัวแปรหรือขั้นตอนที่คาดหวัง ไม่ใช่โมดูล

กรุณาช่วย.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี DrCartwright
ขอโทษที่ตอบคุณช้า
ใช่ ตามที่คุณบอก รหัสมาโครควรอยู่ในโมดูล และคุณจำเป็นต้องเปลี่ยนชื่อรหัสเป็นชื่อของคุณเองดังภาพต่อไปนี้:
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีตอนบ่าย
quisiera saber el codigo สำหรับ que se ใช้งาน una มาโคร cuando cambia el valor de una celda de una columna, pero este valor cambia por สูตร, บาป que el usuario แนะนำ ningun valor
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีทุกคน ฉันกำลังแก้ปัญหาต่อไปนี้: ฉันต้องการขูดชื่อเว็บไซต์เมื่อแทรกลิงก์ในคอลัมน์ A และใส่ค่านี้ไปยังเซลล์ที่เกี่ยวข้อง (ถัดจากนั้น) ในคอลัมน์ B ดูเหมือนว่าปัญหาจะเกิดขึ้นเมื่อฉันวาง เว็บไซต์ในคอลัมน์ A โค้ดจะรันรายการทั้งหมดอีกครั้งจากคอลัมน์ A2 ถึง "แถวสุดท้าย" ตามที่กำหนดไว้ในโค้ด มีวิธีแก้ไขเฉพาะคอลัมน์ B เมื่อแก้ไขคอลัมน์ A เดียวหรือไม่ เช่นถ้าวางลิงก์ในคอลัมน์ A36 ฉันได้รับชื่อใน B36 ไม่ว่าเซลล์จะอยู่ในช่วงกลางของช่วงที่ใช้หรือที่ด้านล่างสุด ฉันต้องการใช้สิ่งนี้โดยไม่ต้องเรียกใช้อินพุตหลาย ๆ อีกครั้งตามที่เป็นอยู่ในปัจจุบัน (เช่นวนรอบ "for i =2 ถึงแถวสุดท้าย")? นอกจากนี้ ฉันต้องการเปลี่ยนด้านล่างจากโมดูลย่อยมาโครเช่นย่อยเป็นย่อยส่วนตัวที่ตอบสนองต่อการเปลี่ยนแปลง (เช่น ฟังก์ชันตัดกัน) โดยที่ 'เป้าหมาย' คือเซลล์ใดๆ จากช่วง A:A ขอบคุณมาก!


ย่อย get_title_header()



Dim wb เป็นวัตถุ

Dim doc เป็นวัตถุ

Dim sURL เป็นสตริง

สลัว Lastrow As Long

แถวสุดท้าย = Sheet1.Cells(Rows.Count, "A").End(xlUp).row



สำหรับฉัน = 2 เพื่อ Lastrow

ตั้งค่า wb = CreateObject("internetExplorer.Application")

sURL = เซลล์ (i, 1)



wb.นำทาง sURL

wb.Visible = เท็จ



ขณะที่ wb.Busy

กิจกรรม

Wend



''เอกสาร HTML

ตั้งค่า doc = wb.document



เซลล์(i, 2) = doc.Title



เกิดข้อผิดพลาด GoTo err_clear

เซลล์(i, 3) = doc.GetElementsByTagName("h1")(0).innerText

err_clear:

ถ้า Err <> 0 แล้ว

Err.Clear

ดำเนินการต่อ ต่อไป

End If

wb.เลิก

ช่วง(เซลล์(i, 1), เซลล์(i, 3)).Columns.AutoFit

ต่อไปฉัน



ย่อยสิ้นสุด




ขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันกำลังพยายามทำให้ 1 สมุดงาน (BOM) เป็นแบบอัตโนมัติเมื่อสมุดงานอื่น (สถานะชิ้นส่วน) ทำการเปลี่ยนแปลง ไฟล์สถานะชิ้นส่วนจะอัปเดตทุกๆ 15 นาที ฉันต้องการทราบวิธีทำให้คอลัมน์ใดคอลัมน์หนึ่งทำงานโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงเหล่านี้หรือไม่ ความคิดใด ๆ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันกำลังใช้โค้ดด้านล่างเพื่อซ่อนคอลัมน์ต่างๆ ขึ้นอยู่กับการเลือกจากกล่องดรอปดาวน์ที่อยู่ในเซลล์ C3 แต่หลังจากทำการคำนวณที่ใดก็ได้ในเวิร์กชีตแล้ว คอลัมน์ทั้งหมดจะกลายเป็น UNHIDDEN ฉันจะแก้ไขปัญหานี้ได้อย่างไร

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)

คอลัมน์("D:F")).ปรับพอดีอัตโนมัติ

Dim Proj1 เป็นสตริง
Dim Proj2 เป็นสตริง
Dim Proj3 เป็นสตริง
Dim Proj4 เป็นสตริง
Dim Proj5 เป็นสตริง
Dim Proj6 เป็นสตริง
Dim Proj7 เป็นสตริง
Dim Proj8 เป็นสตริง
Dim Proj9 เป็นสตริง
Dim Proj10 เป็นสตริง

Proj1 = ActiveWorkbook.Sheets("Projects")).Range("A1")).Value
Proj2 = ActiveWorkbook.Sheets("Projects")).Range("A2")).Value
Proj3 = ActiveWorkbook.Sheets("Projects")).Range("A3")).Value
Proj4 = ActiveWorkbook.Sheets("Projects")).Range("A4")).Value
Proj5 = ActiveWorkbook.Sheets("Projects")).Range("A5")).Value
Proj6 = ActiveWorkbook.Sheets("Projects")).Range("A6")).Value
Proj7 = ActiveWorkbook.Sheets("Projects")).Range("A7")).Value
Proj8 = ActiveWorkbook.Sheets("Projects")).Range("A8")).Value
Proj9 = ActiveWorkbook.Sheets("Projects")).Range("A9")).Value
Proj10 = ActiveWorkbook.Sheets("Projects")).Range("A10")).Value

Dim xRG เป็นช่วง
Dim xHRow เป็นจำนวนเต็ม
ตั้งค่า xRG = ช่วง ("C3")
ถ้าไม่ตัดกัน (เป้าหมาย xRG) ก็ไม่มีอะไรทั้งนั้น

ถ้า Target.Value = Proj1 แล้ว
Application.Columns("E:F")).Hidden = True
Application.Columns("D")).Hidden = False

ElseIf Target.Value = Proj2 แล้ว
Range("D:D, F:F")).EntireColumn.Hidden = True
Application.Columns("E")).Hidden = False

End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
นี่คือสิ่งที่ฉันกำลังมองหา เมื่อผู้ใช้ป้อนค่าในเซลล์ แมโครการเรียงลำดับแบบง่ายจะทำงาน มาโครทำงานได้ดีด้วยตัวเอง แต่ฉันพบข้อผิดพลาดในการใช้คุณสมบัติที่ไม่ถูกต้องโดยใช้รหัสที่แนะนำ

ปัญหาที่อาจเกิดขึ้นคืออะไร?
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ