Tự động giãn dòng vùng đã trộn ô bằng VBA
Chúng ta thường nhận được lời khuyên khi làm việc trong Excel đó là: “ Không nên dùng chức năng trộn ô “, đặc biệt là trong những Workbook có sử dụng VBA. Lời khuyên này rất đúng và hữu ích, bởi việc trộn ô sẽ khiến các câu lệnh VBA hoạt động không chính xác. Thế nhưng trong những ...
Chúng ta thường nhận được lời khuyên khi làm việc trong Excel đó là: “Không nên dùng chức năng trộn ô“, đặc biệt là trong những Workbook có sử dụng VBA. Lời khuyên này rất đúng và hữu ích, bởi việc trộn ô sẽ khiến các câu lệnh VBA hoạt động không chính xác. Thế nhưng trong những trường hợp buộc phải dùng chức năng trộn ô mà vẫn dùng tới VBA để can thiệp vào vùng đã trộn ô thì làm thế nào? Sau đây chúng ta cùng tìm hiểu một ví dụ về việc thiết lập lệnh tự động giãn dòng vùng đã trộn ô bằng VBA:
Tại sao cần làm điều này?
Bởi vì trong vùng đã trộn ô sẽ không tự động giãn dòng nếu nội dung trong đó dài hơn phạm vi vùng trộn ô hoặc nội dung được trình bày dưới dạng xuống dòng trong cùng 1 ô
Chúng ta xét ví dụ sau:
Trong vùng A1:C1 sử dụng chức năng trộn ô (Merge Cells)
Chúng ta nhập dòng chữ sau: Hệ thống Học Excel Online là nơi tốt nhất dành cho bạn
Kết quả sau khi nhập sẽ được hiển thị như sau:
Như vậy trong trường hợp vừa sử dụng Merge Cells mà vẫn muốn tự động giãn dòng để hiển thị hết nội dung thì chúng ta cần sử dụng tới VBA để làm việc này.
Quy trình thực hiện
Việc tìm hiểu quy trình thực hiện rất quan trọng, giúp chúng ta có thể tìm kiếm những câu lệnh thực hiện công việc theo từng bước, giúp đạt được mục đích, đồng thời có thể kiểm tra lại câu lệnh xem có thực hiện đúng như quy trình mà chúng ta xây dựng trước không.
Bước 1: Xác định vùng đã sử dụng Merge (trộn ô). Có thể đặt tên vùng này để dễ nhớ, dễ gọi
Bước 2: Bỏ chức năng Merge (Unmerge Cells) cho vùng đó
Bước 3: Lấy độ rộng ở cột đầu tiên trong vùng đó (First Column Width)
Bước 4: Lấy độ rộng tất cả các cột trong vùng đó (All Column Width)
Bước 5: Thiết lập độ rộng cột đầu tiên bằng tổng độ rộng các cột trong vùng trộn ô (Set First Column Width = Total Column Width)
Bước 6: Tự động giãn động rộng của hàng trong ô đầu tiên của vùng trộn ô (Autofit First Row)
Bước 7: Lấy giá trị độ rộng của hàng thu được ở bước 6
Bước 8: Lấy độ rộng của cột đầu tiên về độ rộng ban đầu của nó
Bước 9: Trộn các ô trong vùng
Bước 10: Thiết lập độ rộng của hàng trong vùng trộn bằng giá trị thu được ở bước 7
Câu lệnh VBA mẫu
Lưu ý:
Đặt tên vùng trộn ô là OrderNote (trong tab Formulas chọn Define Name cho vùng trộn ô)
Đặt dòng lệnh trên trong Event WorkSheet_Change trong Sheet cần áp dụng (Sheet chứa vùng trộn ô)
Tải về file mẫu: http://bit.ly/2BFxiyV
Chúc các bạn học tốt cùng Học Excel Online!