Bỏ qua nội dung chính

Làm cách nào để chạy macro dựa trên giá trị được chọn từ danh sách thả xuống trong Excel?

Tác giả: Tiểu Dương Sửa đổi lần cuối: 2020-04-24

Để chạy macro bằng cách nhấp vào nút lệnh là một nhiệm vụ phổ biến trong Excel, nhưng, bạn đã bao giờ thử thực thi các mã macro dựa trên giá trị được chọn từ danh sách thả xuống chưa? Có nghĩa là, khi bạn chọn một mục từ danh sách thả xuống, macro cụ thể sẽ được kích hoạt ngay lập tức. Bài viết này sẽ giới thiệu một đoạn mã hữu ích cho bạn để giải quyết công việc này.

Chạy macro dựa trên giá trị được chọn từ danh sách thả xuống với mã VBA


mũi tên màu xanh bong bóng bên phải Chạy macro dựa trên giá trị được chọn từ danh sách thả xuống với mã VBA

Không có cách nào trực tiếp để hoàn thành tác vụ này, nhưng mã VBA sau có thể giúp bạn, vui lòng thực hiện như sau:

1. Đầu tiên, hãy tạo một danh sách thả xuống khi bạn cần, xem ảnh chụp màn hình:

doc chạy macro từ menu thả xuống 1

2. Sau đó bấm chuột phải vào tab trang tính có chứa danh sách thả xuống bạn muốn sử dụng, rồi chọn Mã Chế độ xem từ menu ngữ cảnh và trong Microsoft Visual Basic cho các ứng dụng cửa sổ, sao chép và dán mã sau vào Mô-đun trống:

Mã VBA: Chạy macro dựa trên giá trị được chọn từ danh sách thả xuống:

Private Sub Worksheet_Change(ByVal Target As Range)
	If Not Intersect(Target, Range("E1")) Is Nothing Then
	    Select Case Range("E1")
	        Case "Insert Blank rows": Macro1
	        Case "Hide All Sheets": Macro2
            Case "Convert to Date": Macro3
	    End Select
	End If
	End Sub

doc chạy macro từ menu thả xuống 2

Chú thích: Trong đoạn mã trên, E1 là ô chứa danh sách thả xuống, hãy thay đổi tên macro và giá trị danh sách thả xuống theo nhu cầu của bạn.

3. Và sau đó lưu và đóng cửa sổ mã này, bây giờ, khi bạn chọn mục Chèn hàng trống từ danh sách thả xuống, Macro1 sẽ được kích hoạt, v.v.


Các bài liên quan:

Làm thế nào để chạy macro khi giá trị ô thay đổi trong Excel?

Làm thế nào để chạy macro dựa trên giá trị ô trong Excel?

Làm cách nào để chạy macro tự động trước khi in trong Excel?

Làm thế nào để chạy macro bằng cách nhấp vào siêu liên kết trong Excel?

Làm cách nào để chạy macro khi trang tính được chọn từ sổ làm việc?

Công cụ năng suất văn phòng tốt nhất

🤖 Trợ lý AI của Kutools: Cách mạng hóa việc phân tích dữ liệu dựa trên: Thực thi thông minh   |  Tạo mã  |  Tạo công thức tùy chỉnh  |  Phân tích dữ liệu và tạo biểu đồ  |  Gọi các hàm Kutools...
Các tính năng phổ biến: Tìm, đánh dấu hoặc xác định các bản sao   |  Xóa hàng trống   |  Kết hợp các cột hoặc ô mà không làm mất dữ liệu   |   Vòng không có công thức hữu ích. Cảm ơn !
Siêu tra cứu: Nhiều tiêu chí VLookup    VLookup Nhiều Giá Trị  |   VLookup trên nhiều trang tính   |   Tra cứu mờ ....
Danh sách thả xuống nâng cao: Tạo nhanh danh sách thả xuống   |  Danh sách thả xuống phụ thuộc   |  Danh sách thả xuống nhiều lựa chọn ....
Trình quản lý cột: Thêm một số cột cụ thể  |  Di chuyển cột  |  Chuyển đổi trạng thái hiển thị của các cột ẩn  |  So sánh dãy và cột hữu ích. Cảm ơn !
Các tính năng nổi bật: Tiêu điểm lưới   |  Chế độ xem thiết kế   |   Thanh công thức lớn    Trình quản lý sổ làm việc & trang tính   |  Thư viện tài nguyên (Văn bản tự động)   |  Bảng chọn ngày   |  Kết hợp các bảng tính   |  Mã hóa/Giải mã ô    Gửi email theo danh sách   |  Siêu lọc   |   Bộ lọc đặc biệt (lọc in đậm/nghiêng/gạch ngang...) ...
15 bộ công cụ hàng đầu12 bản văn CÔNG CỤ (thêm văn bản, Xóa ký tự,...)   |   50 + Biểu đồ Các loại (Biểu đồ Gantt,...)   |   40+ Thực tế Công thức (Tính tuổi dựa trên ngày sinh,...)   |   19 chèn CÔNG CỤ (Chèn mã QR, Chèn ảnh từ đường dẫn,...)   |   12 Chuyển đổi CÔNG CỤ (Số thành từ, Chuyển đổi tiền tệ,...)   |   7 Hợp nhất & Tách CÔNG CỤ (Các hàng kết hợp nâng cao, Chia ô,...)   |   ... và nhiều hơn nữa

Nâng cao kỹ năng Excel của bạn với Kutools for Excel và trải nghiệm hiệu quả hơn bao giờ hết. Kutools for Excel cung cấp hơn 300 tính năng nâng cao để tăng năng suất và tiết kiệm thời gian.  Bấm vào đây để có được tính năng bạn cần nhất...

Mô tả


Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
Comments (7)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Codes help me and work very fine. Thanks a lot. Is there any way to get case value in a variable and then compare?
with best regards
This comment was minimized by the moderator on the site
A co jeśli potrzebuję aby po uruchomieniu makra wszystkie listy rozwijane ustawiły się na jeden z wyborów z listy? W sumie odwrotnie do tego co jest w poście. Czy istnieje na to łatwiejszy sposób?
This comment was minimized by the moderator on the site


FIRST CODE WORKING PERFECTLYPrivate Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D1")) Is Nothing Then
Select Case Range("D1")
         Case "0.5": Half
         Case "1": One
         Case "1.25": OneTwentyFive
End Select
End If
End Sub
SECOND CODE NOT WORKING (plz correct the below)
Private Sub Change(ByVal Target As Range)
If Not Intersect(Target, Range("D2")) Is Nothing Then
Select Case Range("D2")
         Case "9.53": ninepointfivethree
End Select
End If
End Sub
This comment was minimized by the moderator on the site
Good morning. Would you be able to do Macro from drop down menu for next: To run macro and save separated sheets for each item from Dropdown menu? In your case should be looking like this:
1. You run macro and then you have separated sheet with values for "Insert blank rows" saved in designated folder
2. Separated sheet with values for " Hide all sheets:" saved in designated folder
3. Separated sheet with values for " Convert to date" saved in designated folder.
4. Macro is done now


Mainly i am able do set all of this except that macro automatically change selection from drop down menu ?


Thanks


Ivan
This comment was minimized by the moderator on the site
Hola!

Al aplicarlo me sale un error de compilación: La declaración del procedimiento no coincide con la descripción del evento o el procedimiento que tiene el mismo nombre. Que quiere decir eso? que debo cambiar/arreglar? Gracias
This comment was minimized by the moderator on the site
Is there a way to use VBA code to do this in Access? Thanks
This comment was minimized by the moderator on the site
efectivamente funciona pero quiero aplicarlo en varias celdas, que variable debo cambiar?
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations