Cách thay đổi kích thước của Drop List trong Excel bằng VBA

Nội dung được viết bởi Linh Mai

Bạn tạo Drop List trong Excel (danh sách thả xuống) nhưng nó không hiển thị đầy đủ thông tin? Hãy sử dụng code mẫu và cách thay đổi kích thước Drop List bằng VBA này nhé.

Đặc điểm của Dropdown List tạo bởi Data Validation

Trong Data Validation của Excel có tùy chọn để chúng tạo Drop List (danh sách thả xuống) giúp việc nhập dữ liệu trong Excel nhanh chóng và hiệu quả hơn. Tuy nhiên, ở thiết lập mặc định thì danh sách dạng này dễ gặp một số lỗi như:

  • Độ rộng (chiều ngang) của danh sách quá nhỏ do phụ thuộc và độ rộng cột của nơi bạn tạo danh sách thả xuống đó.
  • Danh sách không hiển thị hết các thông tin bởi vì kích thước danh sách quá nhỏ do trong Drop List có ký tự lớn, chế độ hiển thị của sheet nhỏ.
Cách thay đổi kích thước của Drop List trong Excel bằng VBA

Vì những lỗi này mà việc nhập thông tin của bạn từ nhanh lại thành chậm, mất thời gian ngồi kiểm tra lại xem có phần nào chọn nhầm hay không. Excel cũng không có sẵn tính năng cho phép chúng ta thay đổi kích cỡ của danh sách này. Tuy nhiên, sử dụng VBA thì hoàn toàn có thể. Chúng mình đã chuẩn bị sẵn code mẫu và hướng dẫn chi tiết ngay dưới đây, cùng theo dõi cách thực hiện nhé.

Xem thêm: Hướng dẫn Excel cơ bản về Cách sử dụng Data Validation 

Cách thay đổi kích thước danh sách thả xuống trong Data Validation bằng VBA Excel

Thay đổi độ rộng của danh sách chọn mỗi khi tác động tới danh sách đó

Chúng ta sẽ thực hiện thao tác này theo nguyên tắc như sau:

  • Mục tiêu tác động: Thuộc tính Column Width của cột nơi chứa ô áp dụng Data Validation/List.
  • Khi chọn ô chứa List, độ rộng (Column Width của cột đó) sẽ thay đổi.
  • Khi không chọn ô chứa List nữa, độ rộng của cột sẽ trả về bình thường (trở về trạng thái ban đầu).

Dựa trên nguyên tắc này, chúng ta có thể xác định được ây là 1 sự kiện Selection_Change, tức là bạn chọn 1 ô nào đó trong Sheet.

Ví dụ: Tại ô B1 đã được tạo danh sách thả xuống bằng Data Validation cho vùng dữ liệu A3:A7 với độ rộng của cột B (Column Width) bằng 8.

Cách thay đổi kích thước của Drop List trong Excel bằng VBA

Các bạn chọn vào ô B1 (ô chứa Drop List) rồi sử dụng câu lệnh sau đây để đổi độ rộng từ 8 thành 14:

  • Thiết lập độ rộng
Range(“B1”).ColumnWidth = 8
Range(“B1”).ColumnWidth = 14
  • Thiết lập logic khi nào áp dụng các độ rộng trên:

IF mệnh đề logic Then

Range(“B1”).ColumnWidth = 14

Else

Range(“B1”).ColumnWidth = 8

End If

  • Mệnh đề logic là: Khi chọn ô B1:

Mệnh đề này liên quan tới việc giới hạn phạm vi trong Worksheet, do đó cú pháp là:

IF Not Application.Intersect(Target, Range(“B1”)) Is Nothing Then

Range(“B1”).ColumnWidth = 14

Else

Range(“B1”).ColumnWidth = 8

End If

Trong có câu lệnh chúng mình viết phía trên, các bạn xem phần in đậm thì cần chú ý là vùng Range ("B1") là phần vùng giới hạn nơi diễn ra sự kiện. Phần này có thể thay đổi tùy theo yêu cầu. Nhưng riêng phần chữ màu đỏ thì là cú pháp quy định, phải được viết lại đúng cú pháp nhé.

Đặt toàn bộ cấu trúc này vào trong sự kiện Worksheet_SelectionChange, ta có:

Cách thay đổi kích thước của Drop List trong Excel bằng VBA

Kết quả khi áp dụng sự kiện này như sau:

Cách thay đổi kích thước của Drop List trong Excel bằng VBA

Xem thêm: Tổng hợp mã VBA Excel thao tác với trang tính Excel cực nhanh

Thay đổi chế độ hiển thị của Sheet mỗi khi tác động tới danh sách đó

Nguyên để chúng ta thực hiện thao tác này như sau:

  • Mục tiêu tác động: Kích cỡ Zoom của màn hình Excel.
  • Logic: Khi chọn ô chứa List, màn hình ứng dụng Excel sẽ tăng kích cỡ Zoom lên.
  • Khi không chọn ô chứa List nữa, màn hình ứng dụng Excel sẽ trả về kích cỡ Zoom bình thường (trở về trạng thái ban đầu).

Cách thực hiện cụ thể là:

  • Sự kiện: Worksheet_SelectionChange.
  • Đối tượng của sự kiện: ô B1 của Sheet nơi diễn ra sự kiện.
  • Logic: Nếu ô B1 được chọn, ActiveWindow.Zoom (thuộc tính Zoom của đối tượng ActiveWindow) sẽ bằng 150. Nếu chọn ô khác ô B1, ActiveWindow.Zoom trả về 100 (mặc định là 100%).

Câu lệnh mà chúng ta sẽ sử dụng có dạng:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range(“B1”)) Is Nothing Then
ActiveWindow.Zoom = 150
Else
ActiveWindow.Zoom = 100
End If
End Sub
Cách thay đổi kích thước của Drop List trong Excel bằng VBA

Đến đây là các thao tác đã hoàn thành. Nếu các bạn muốn tải file tài liệu mẫu thì hãy kéo xuống cuối bài viết để tải trong mục “Tài liệu đính kèm” nhé. Chúc các bạn áp dụng thành công!

Xem thêm: Thư viện mã VBA trong Excel hữu ích cho người mới bắt đầu 

Kết luận

Qua bài chia sẻ của chúng mình, các bạn có thể thấy rằng những thao tác mà Excel không có sẵn thì có thể thực hiện một cách dễ dàng với VBA. Nếu các bạn muốn học cách dùng VBA để nâng cao hiệu suất làm việc trên Excel thì hãy đăng ký khóa học dưới đây:

Khóa học lập trình VBA trong Excel - Viết code trong tầm tay

Khóa học sẽ giúp các bạn sẽ xây dựng được tư duy lập trình cơ bản giúp giải quyết các vấn đề tận gốc thông qua các bài tập thiết thực trong công việc. Các bạn sẽ biết cách cách tự viết code, đọc hiểu code và sửa code VBA, biết phát hiện và xử lý lỗi, tạo userform, sự kiện, in hàng loạt, thêm/sửa/xóa dữ liệu, nạp dữ liệu, trích xuất dữ liệu,… Trong quá trình học, giảng viên sẽ hỗ trợ và giải đáp mọi thắc mắc cho bạn. Bạn có thể học mọi lúc, mọi nơi vì khóa học có giá trị sử dụng trọn đời. Chúc các bạn luôn học tập hiệu quả nhé!

Tài liệu kèm theo bài viết

KHÓA HỌC EXCEL ONLINE HOÀN TOÀN MIỄN PHÍ

Khóa học với hơn 14000 HỌC VIÊN đang học và đánh giá trung bình 4.76 SAO

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông