Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

ดรอปดาวน์ รายการเป็นคุณลักษณะที่มีประโยชน์มากในการทำงานต่างๆ ที่เกี่ยวข้องกับ Excel การใช้งาน VBA เป็นวิธีที่มีประสิทธิภาพ รวดเร็วที่สุด และปลอดภัยที่สุดในการรันการดำเนินการใดๆ ใน Excel ในบทความนี้ เราจะแสดงให้คุณเห็น 2 วิธีที่มีประสิทธิภาพในการเลือกค่าจากรายการแบบเลื่อนลง ใน Excel ด้วย มาโคร VBA .

ดาวน์โหลดสมุดงาน

คุณสามารถดาวน์โหลดเวิร์กบุ๊ก Excel แบบฝึกหัดฟรีได้จากที่นี่

การสร้างรายการดรอปดาวน์จากรายการทั่วไปใน Excel

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

ต่อไปนี้เป็นรายการทั่วไปที่เรามีในแผ่นงาน Excel ของเรา มีค่าที่ซ้ำกัน (เช่น Apple ใน เซลล์ B7 และ B9 ) ในรายการ

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

เราจะดูวิธีการสร้าง รายการแบบเลื่อนลงประกอบด้วยค่า (เช่น องุ่น ส้ม แอปเปิ้ล มะม่วง แอปเปิ้ล ) จากรายการทั่วไป .

ขั้นตอน:

  • ในตอนแรก คลิกที่เซลล์ใดก็ได้ (เซลล์ D4 ในกรณีของเรา) ที่คุณต้องการจัดเก็บรายการแบบเลื่อนลง
  • จากนั้น คลิกที่แท็บ ข้อมูล .
  • หลังจากนั้น เลือก การตรวจสอบข้อมูล จาก เครื่องมือข้อมูล กลุ่มริบบิ้น

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

  • A การตรวจสอบข้อมูล กล่องป๊อปอัปจะปรากฏขึ้น จากนั้น
    • เลือก รายการ ใน อนุญาต  เกณฑ์
    • ใน ที่มา เกณฑ์ ลากช่วง (B5:B9 ในกรณีของเรา) ที่มีค่าสำหรับรายการแบบเลื่อนลง

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

  • ภายหลัง คลิก ตกลง .

ดูภาพต่อไปนี้

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

ใน เซลล์ D4 มี รายการแบบเลื่อนลงที่สร้างขึ้น ซึ่งถือ ค่า (เช่น องุ่น ส้ม แอปเปิ้ล มะม่วง แอปเปิ้ล ) ดึงข้อมูลจากรายการทั่วไป (ช่วง B5:B9 )

2 วิธีกับ VBA เพื่อเลือกค่าจากรายการแบบหล่นลงใน Excel

ในส่วนนี้ คุณจะได้เรียนรู้วิธีเลือกค่าหลายค่าที่มีทั้งค่าซ้ำและไม่ซ้ำจากรายการแบบเลื่อนลง ใน Excel ด้วย VBA .

1. ฝัง VBA เพื่อเลือกหลายค่าจากรายการดรอปดาวน์ใน Excel (ด้วยค่าที่ซ้ำกัน)

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

ขั้นตอน:

  • ในตอนแรก ให้กด Alt + F11 บนแป้นพิมพ์ของคุณหรือไปที่แท็บ นักพัฒนา -> Visual Basic เพื่อเปิด Visual Basic Editor .

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

  • ถัดไป คลิกขวาที่ชื่อแผ่นงานที่ต้องการ และเลือก ดูโค้ด จากรายการตัวเลือกที่ปรากฏ

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

  • จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValueA As String
Dim ValueB As String
On Error GoTo Exitsub
If Target.Address = "$D$4" Then
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
    Else: If Target.Value = "" Then GoTo Exitsub Else
        Application.EnableEvents = False
        ValueB = Target.Value
        Application.Undo
        ValueA = Target.Value
        If ValueA = "" Then
            Target.Value = ValueB
        Else
            Target.Value = ValueA & ", " & ValueB
        End If
    End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

  • อย่าวิ่ง รหัสนี้ บันทึก  มัน.
  • ตอนนี้ กลับไปที่แผ่นงาน ที่น่าสนใจ หากคุณ คลิกที่รายการแบบเลื่อนลงที่สร้างขึ้น ใน เซลล์ D4 คุณจะเห็นว่าขณะนี้คุณสามารถ เลือกค่าได้หลายค่าจากเมนูแบบเลื่อนลง (ดูที่ gif ต่อไปนี้)

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

ดังที่คุณเห็นจาก gif ด้านบน คุณยังสามารถเลือกค่าหนึ่งๆ ได้หลายครั้ง ด้วย VBA . นี้ รหัส. รหัสมาโครที่เราให้ไว้ในส่วนนี้จะให้รายการแบบเลื่อนลงเลือกค่าทุกประเภท .

คำอธิบายโค้ด VBA

Dim ValueA As String
Dim ValueB As String

การกำหนดชื่อตัวแปร

On Error GoTo Exitsub

หากเกิดข้อผิดพลาด ให้ไปที่ป้ายกำกับ ออก .

If Target.Address = "$D$4" Then
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub

ตั้งค่าปลายทางเป็นเซลล์ D4 ซึ่งมีการตรวจสอบข้อมูล หากไม่มีเซลล์ที่มีการตรวจสอบความถูกต้องของข้อมูล ให้ไปที่ป้ายกำกับ ออก .

Else: If Target.Value = "" Then GoTo Exitsub Else

หากไม่มีเซลล์ปลายทาง ให้ไปที่ป้ายกำกับ ออก . มิฉะนั้น ให้ดำเนินการตามบรรทัดต่อไปนี้

Application.EnableEvents = False

การปิด Application Events เพื่อให้ Worksheet_Change มาโครสามารถป้องกันไม่ให้เริ่มทำงาน มิฉะนั้น อาจทำให้เกิดลูปอนันต์ที่อาจเกิดขึ้นได้

ValueB = Target.Value

การกำหนด ValueB ให้เป็นค่าใหม่ของเซลล์ที่เปลี่ยนแปลง

Application.Undo

หากต้องการเลิกทำเซลล์ที่เปลี่ยนแปลง

ValueA = Target.Value

ด้วยการเลิกทำการเปลี่ยนแปลง ตอนนี้เราสามารถกำหนด ValueA ให้เป็นค่าเดิมของเซลล์ที่เปลี่ยนแปลง

If ValueA = "" Then
 Target.Value = ValueB

หากค่าเดิมว่างเปล่า ให้เก็บค่าใหม่เป็นปลายทาง

Else
 Target.Value = ValueA & ", " & ValueB
  End If
 End If
End If

มิฉะนั้น ให้ตั้งค่าทั้งค่าเก่าและค่าใหม่เป็นค่าปลายทางโดยเชื่อมด้วยเครื่องหมายจุลภาค (, ). ปิดทั้งหมด ถ้า แถลงการณ์

Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True

ย้อนกลับไปที่ Application Events

อ่านเพิ่มเติม: วิธีสร้างรายการดรอปดาวน์ใน Excel ด้วยการเลือกหลายรายการ

การอ่านที่คล้ายกัน:

  • วิธีสร้างรายการแบบหล่นลงจากชีตอื่นใน Excel (2 วิธี)
  • สร้างรายการดรอปดาวน์ที่ค้นหาได้ใน Excel (2 วิธี)
  • รายการแบบหล่นลงของ Excel ไม่ทำงาน (8 ปัญหาและวิธีแก้ไข)
  • สร้างรายการแบบหล่นลงของ Excel จากตาราง (5 ตัวอย่าง)
  • อัปเดตรายการแบบเลื่อนลงอัตโนมัติใน Excel (3 วิธี)

2. ใช้มาโคร VBA เพื่อเลือกหลายค่าจากรายการแบบหล่นลง (โดยไม่มีค่าซ้ำ)

เรามีค่าซ้ำกันในชุดข้อมูลของเรา หากคุณต้องการให้รายการแบบเลื่อนลงจับ ค่าทั้งหมด ยกเว้นค่าที่ซ้ำกัน จากนั้นทำตามขั้นตอนด้านล่าง

ขั้นตอน:

  • ดังที่แสดงก่อนหน้านี้ เปิด Visual Basic Editor จาก นักพัฒนา แท็บ
  • จากนั้นไปที่ หน้าต่างโค้ด จาก ดูโค้ด ตัวเลือกปรากฏขึ้นโดยคลิกขวา แผ่นงาน ที่น่าสนใจ
  • จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ดของเวิร์กชีตที่ระบุ
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValueA As String
Dim ValueB As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Target.Address = "$D$4" Then
  If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
  Else: If Target.Value = "" Then GoTo Exitsub Else
    Application.EnableEvents = False
    ValueB = Target.Value
    Application.Undo
    ValueA = Target.Value
      If ValueA = "" Then
        Target.Value = ValueB
      Else
        If InStr(1, ValueA, ValueB) = 0 Then
            Target.Value = ValueA & ", " & ValueB
      Else:
        Target.Value = ValueA
      End If
    End If
  End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

  • อย่าวิ่ง รหัสนี้ บันทึก  มัน.
  • ตอนนี้ กลับไปที่แผ่นงาน ที่น่าสนใจ หากคุณ คลิกที่รายการแบบเลื่อนลงที่สร้างขึ้น ใน เซลล์ D4 คุณจะเห็นว่าขณะนี้คุณสามารถ เลือกค่าได้หลายค่าจากเมนูแบบเลื่อนลง (ดูที่ gif ต่อไปนี้)

VBA เพื่อเลือกค่าจากรายการดรอปดาวน์ใน Excel (2 วิธี)

ดังที่คุณเห็นจาก gif ด้านบน คุณ ไม่สามารถเลือกค่าใดค่าหนึ่งได้หลายครั้ง ด้วย VBA . นี้ รหัส. รหัสมาโครที่เราให้ไว้ในส่วนนี้จะให้รายการแบบเลื่อนลงเลือกค่าโดยไม่มีค่าซ้ำกัน .

คำอธิบายโค้ด VBA

Dim ValueA As String
Dim ValueB As String

การกำหนดชื่อตัวแปร

Application.EnableEvents = True

ย้อนกลับไปที่ Application Events

On Error GoTo Exitsub

หากเกิดข้อผิดพลาด ให้ไปที่ป้ายกำกับ ออก .

If Target.Address = "$D$4" Then
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub

ตั้งค่าปลายทางเป็นเซลล์ D4 ซึ่งมีการตรวจสอบข้อมูล หากไม่มีเซลล์ที่มีการตรวจสอบความถูกต้องของข้อมูล ให้ไปที่ป้ายกำกับ ออก .

Else: If Target.Value = "" Then GoTo Exitsub Else

หากไม่มีเซลล์ปลายทาง ให้ไปที่ป้ายกำกับ ออก . มิฉะนั้น ให้ดำเนินการตามบรรทัดต่อไปนี้

Application.EnableEvents = False

การปิด Application Events เพื่อให้ Worksheet_Change สามารถป้องกันไม่ให้มาโครเริ่มทำงานซึ่งอาจทำให้เกิดการวนซ้ำที่ไม่สิ้นสุดได้

ValueB = Target.Value

การกำหนด ValueB ให้เป็นค่าใหม่ของเซลล์ที่เปลี่ยนแปลง

Application.Undo

หากต้องการเลิกทำเซลล์ที่เปลี่ยนแปลง

ValueA = Target.Value

ด้วยการเลิกทำการเปลี่ยนแปลง ตอนนี้เราสามารถกำหนด ValueA ให้เป็นค่าเดิมของเซลล์ที่เปลี่ยนแปลง

If ValueA = "" Then
 Target.Value = ValueB

หากค่าเดิมว่างเปล่า ให้เก็บค่าใหม่เป็นปลายทาง

Else
 If InStr(1, ValueA, ValueB) = 0 Then
 Target.Value = ValueA & ", " & ValueB

ฟังก์ชัน InStr ส่งกลับตำแหน่งของสตริงย่อยที่เกิดขึ้นครั้งแรกในสตริง หากผลลัพธ์เป็น 0 จากนั้นตั้งค่าทั้งค่าเก่าและค่าใหม่เป็นค่าปลายทางโดยเชื่อมด้วยเครื่องหมายจุลภาค (, )

Else: Target.Value = ValueA
    End If
   End If
  End If
 End If

มิฉะนั้น ให้ตั้งค่าเดิมเป็นปลายทาง ปิดทั้งหมด ถ้า แถลงการณ์

Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True

ย้อนกลับไปที่ Application Events

อ่านเพิ่มเติม: รายการแบบหล่นลงของ Excel ขึ้นอยู่กับการเลือก

บทสรุป

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

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

  • วิธีการสร้างรายการแบบหล่นลงตามสูตรใน Excel (4 วิธี)
  • รายการแบบเลื่อนลงตามเงื่อนไขใน Excel (สร้าง จัดเรียง และใช้งาน)
  • วิธีใช้คำสั่ง IF เพื่อสร้างรายการดรอปดาวน์ใน Excel
  • เชื่อมโยงค่าของเซลล์กับรายการดรอปดาวน์ใน Excel (5 วิธี)
  • วิธีลบรายการดรอปดาวน์ใน Excel