Excel - เรียกใช้แมโครเมื่อเลือกรายการจากรายการแบบเลื่อนลง

Microsoft Office เป็นซอฟต์แวร์ Office เชิงพาณิชย์ที่มีเซิร์ฟเวอร์บริการและแอพพลิเคชั่นเดสก์ท็อปสำหรับระบบปฏิบัติการ Windows และ Mac OS X ซอฟต์แวร์ Office นี้มีแอปพลิเคชันที่เรียกว่า Microsoft Excel ซึ่งเป็นแอปพลิเคชั่นสเปรดชีตเชิงพาณิชย์ที่มีการเขียนโปรแกรมแมโครการคำนวณและอื่น ๆ แมโครคือชุดคำสั่งใน Excel ซึ่งทำหน้าที่เฉพาะอย่าง หากคุณต้องการทำงานที่เฉพาะเจาะจงซ้ำ ๆ คุณสามารถทำให้งานนั้นเป็นอัตโนมัติด้วยแมโคร รายการแบบหล่นลงช่วยให้คุณสามารถป้อนข้อมูลลงในสเปรดชีตจากรายการที่ตั้งไว้ล่วงหน้า ทำให้การป้อนข้อมูลง่ายขึ้นและ จำกัด จำนวนตำแหน่งในการป้อนข้อมูล คุณสามารถเรียกใช้แมโครที่แตกต่างกันสำหรับการเลือกทุกรายการในรายการแบบหล่นลง

ปัญหา

ฉันสามารถสร้างมาโครที่จะเติมเซลล์ในคอลัมน์ A ด้วยวันที่ & เซลล์ในคอลัมน์ B พร้อมเวลา (พร้อมการอ้างอิงแบบสัมพัทธ์ดังนั้นมันจะทำในแถวใดก็ได้ที่เคอร์เซอร์อยู่) และเรียก มัน datetimeentry (มันเป็นโมดูล)

 Sub datetimeentry () '' datetimeentry Macro '' ActiveCell.Value = วันที่ ActiveCell.Offset (0, 1). ช่วง ("A1") เลือก ActiveCell.Value = เวลา ActiveCell.Offset (0, 2) ") .Select End Sub 
  • ฉันได้สร้างรายการแบบเลื่อนลงในคอลัมน์ C เพื่อเลือก สิ่งที่ฉันต้องการทำคือ:
  • ฉันต้องการให้แมโครทำงานเมื่อฉันเลือกบางอย่างจากรายการแบบเลื่อนลง มาโครนี้ควรทำงานในแถวเดียวกับเซลล์ที่ฉันเลือกไว้

เช่น: ถ้าฉันเลือกจากรายการแบบเลื่อนลงในเซลล์ c1156 กว่าที่ฉันต้องการให้แมโครทำงานและแทรกวันที่ใน A1156 & เวลาใน B1156 จากนั้นข้ามไปยังเซลล์ D1156 เพื่อป้อนค่า

สารละลาย

ก่อนอื่นให้ฉันบอกว่าความล้มเหลวเป็นตัวเลือกที่ถูกต้องมาก: P

คุณต้องกำหนดฟังก์ชั่นนี้:

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

ส่วนท้าย

สมมุติว่าแผ่นที่เรากำลังพูดถึงคือแผ่นที่ 1

  • ดังนั้นเปิด VBE และดับเบิลคลิกที่ sheet1 บน explorer โครงการ
  • วางรูทีนนี้และอ่านความคิดเห็นในรหัสเกี่ยวกับช่องว่าง

 ส่วนตัว Sub Worksheet_Change (ByVal Target เป็น Range) 'here 3 คือหมายเลขคอลัมน์ 3 ซึ่งเป็นคอลัมน์ C ถ้า (Target.Column 3) จากนั้นออกจากแอปพลิเคชันย่อย EnableEvents = False thisrow = Target.Row ถ้า Target.Value = "" จากนั้นตอนนี้ คุณสามารถคอมเม้นต์รหัสได้หากมันไม่สมเหตุสมผล 'แต่แนวคิดก็คือถ้าเซลล์ในคอลัมน์ C ถูกล้างออกแล้ว' วันที่และเวลาที่สอดคล้องกันควรถูกลบออกด้วยเช่นกัน Cells (thisrow, "A") = "" เซลล์ (thisrow, "B") = "" Else Cells (thisrow, "A") = Date Cells (thisrow, "B") = เวลาสิ้นสุดหาก Application.EnableEvents = True End Sub 

สังเกตได้ว่า

ขอบคุณ rizvisa1 สำหรับเคล็ดลับนี้ในฟอรัม

บทความก่อนหน้านี้ บทความถัดไป

เคล็ดลับยอดนิยม