วันพุธ 13 กรกฎาคม 2022
  3 ตอบกลับ
  เยี่ยมชม 5.6 พันครั้ง
0
โหวต
แก้
ฉันแก้ไขฟังก์ชัน subject เพื่อลบการเลือกที่มีอยู่เมื่อเลือกใหม่อีกครั้ง และเพื่อลบ extra ;'s นี่คือรหัสที่แก้ไข:

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
'ปรับปรุงโดย Extendoffice 2019/11/13
'อัปเดตโดย Ken Gardner 2022/07/11
Dim xRng เป็นช่วง
Dim xValue1 เป็นสตริง
Dim xValue2 เป็นสตริง
Dim semiColonCnt เป็นจำนวนเต็ม
ถ้า Target.Count > 1 แล้วออกจาก Sub
เกี่ยวกับข้อผิดพลาดต่อไป
ตั้งค่า xRng = Cells.SpecialCells(xlCellTypeAllValidation)
ถ้า xRng ไม่มีอะไร ให้ออกจาก Sub
Application.EnableEvents = เท็จ
'ถ้าไม่ใช่ Application.Intersect(Target, xRng) ก็ไม่มีอะไรทั้งนั้น
ถ้า Application.Intersect(Target, xRng) แล้ว
xValue2 = Target.Value
แอปพลิเคชันเลิกทำ
xValue1 = Target.Value
Target.Value = xValue2
ถ้า xValue1 <> "" แล้ว
ถ้า xValue2 <> "" แล้ว
ถ้า xValue1 = xValue2 หรือ xValue1 = xValue2 & ";" หรือ xValue1 = xValue2 & "; " จากนั้น ' ปล่อยค่าหากมีเพียงค่าเดียวในรายการ
xValue1 = แทนที่ (xValue1, "; "," "")
xValue1 = แทนที่ (xValue1, ";", "")
Target.Value = xValue1
ElseIf InStr(1, xValue1, "; " & xValue2) แล้ว
xValue1 = Replace(xValue1, xValue2, "") ' ลบค่าที่มีอยู่ออกจากรายการเมื่อเลือกซ้ำ
Target.Value = xValue1
ElseIf InStr(1, xValue1, xValue2 & ";") จากนั้น
xValue1 = แทนที่ (xValue1, xValue2, "")
Target.Value = xValue1
อื่น
Target.Value = xValue1 & ";" & xValue2
End If
Target.Value = แทนที่ (Target.Value, ";;", ";")
Target.Value = แทนที่ (Target.Value, "; ;", ";")
ถ้า InStr(1, Target.Value, "; ") = 1 จากนั้น ' ให้ตรวจสอบ ; เป็นอักขระตัวแรกแล้วลบออก
Target.Value = แทนที่ (Target.Value, "; ", "", 1, 1)
End If
ถ้า InStr(1, Target.Value, ";") = 1 แล้ว
Target.Value = แทนที่ (Target.Value, ";", "", 1, 1)
End If
เซมิโคลอนCnt = 0
สำหรับฉัน = 1 ถึงเลน(Target.Value)
ถ้า InStr(i, Target.Value, ";") แล้ว
semiColonCnt = semiColonCnt + 1
End If
ต่อไปฉัน
ถ้า semiColonCnt = 1 แล้ว ' ลบ ; ถ้าอักษรตัวสุดท้าย
Target.Value = แทนที่ (Target.Value, "; "," "")
Target.Value = แทนที่ (Target.Value, ";", "")
End If
End If
End If
End If
Application.EnableEvents = จริง
ย่อยสิ้นสุด
1 ปีที่ผ่านมา
·
#2872
0
โหวต
แก้
สวัสดี เคน การ์ดเนอร์

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

ฉันหวังว่าจะได้ยินจากคุณ. :)

อแมนดา
1 ปีที่ผ่านมา
·
#2879
0
โหวต
แก้
สวัสดี Amanda โดยทั้งหมดไปข้างหน้า ฉันได้รับรหัสต้นฉบับจาก ExtendOffice.
เชียร์เคน
1 ปีที่ผ่านมา
·
#2882
0
โหวต
แก้
เชียร์เคน :D
  • หน้า:
  • 1
ไม่มีคำตอบสำหรับโพสต์นี้