Hãy đăng nhập để có nhiều chức năng hữu dụng hơn và xem ảnh rõ hơn!
Bạn phải đăng nhập để xem được nội dung, nếu bạn chưa có tài khoản? hãy Đăng ký mới
x
Trong VBA các bạn sẽ thường thấy câu lệnh With...End With xuất hiện khi thao tác thu macro tự động cho công việc định dạng ô bảng tính..
Ví dụ 1:
- With Selection.Interior
- .Pattern = xlSolid
- .PatternColorIndex = xlAutomatic
- .Color = 65535
- .TintAndShade = 0
- .PatternTintAndShade = 0
- End With
Sao chép mã
Vậy ý nghĩa nó là gì? Khi nào nên dùng?
1. Ý nghĩa câu lệnh with.. End with:
- Nếu các bạn đọc giáo trình VBA các bạn sẽ thấy định nghĩa rất bác học. Nên đôi lúc sẽ khó hiểu và nản.
Mình giải thích cho các bạn theo cách "đời thường" nhất:
* Hãy nghe đoạn văn mô tả về 1 cô người mẫu A:
- + Cô người mẫu A có làn da trắng như sữa.
- + Cô người mẫu A có hàm răng đều như hạt bắp.
- + Cô người mẫu A có chân dài tới nách.
- + Cô người mẫu A có giọng nói như chim.
Sao chép mã
....
Ôi như vậy chúng ta cứ thấy đối tượng "Cô người mẫu A" cứ lặp đi lặp lại vậy nghe nhàm quá. Nên ta viết lại như sau xem sao:
- Với đối tượng cô người mẫu A:
- + làn da trắng như sữa
- + hàm răng đều như hạt bắp
- + chân dài tới nách
- + giọng nói như chim
- Hết.
Sao chép mã
Ôi thấy gọn gàng hơn nhiều đấy chứ.
===> Câu lệnh With...End With cũng có tác dụng như việc thu gọn ở ví dụ trên đấy.
Bằng cách sử dụng With... End With, bạn có thể thực hiện khai báo một loạt các thuộc tính khác nhau thuộc về cùng một đối tượng quy định mà không cần phải chỉ định tên của đối tượng nhiều lần.
(Làn da, hàm răng, chân dài, giọng nói.... chính là thuộc tính của đối tượng "cô người mẫu A")
* Trở lại ví dụ 1 nói trên:
- Nếu không dùng câu lệnh With...End With thì phải viết như thế này:
-
- Selection.Interior.Pattern = xlSolid
- Selection.Interior.PatternColorIndex = xlAutomatic
- Selection.Interior.Color = 65535
- Selection.Interior.TintAndShade = 0
- Selection.Interior.PatternTintAndShade = 0
Sao chép mã
Nó giống y chang ví dụ "cô người mẫu" vậy đó. Đối tượng "Selection.Interior" cứ lặp đi lặp lại liên tục. ==> Mỗi 1 lần VBA truy xuất nhận thực hiện 1 dòng lệnh thì thêm 1 lần nó phải gọi đối tượng "Selection.Interior" ra. ==> Việc thực thi sẽ mất thời gian dài hơn. Trong khi đó, với câu lệnh With...End With như ví dụ 1 thì VBa chỉ cần 1 lần duy nhất truy xuất đến đối tượng "Selection.Interior" và gắn cho nó 1 loạt các thuộc tính của đối tượng này.
* Trường hợp khác: nếu chúng ta chỉ cần can thiệp vào 1 thuộc tính của đối tượng như:
- With Selection.Interior
- .Color = 65535
- End With
Sao chép mã So với câu lệnh:- Selection.Interior.Color = 65535
Sao chép mã
thì With.. End with trở nên luộm thuộm hơn.
Ví như:
- thay vì viết: "Cô người mẫu A có làn da trắng như sữa" thì ta lại viết "Với cô người mẫu A - Làn da trắng như sữa - Hết"
Vì vậy:
==> Khi chỉ cần can thiệp chỉ vào duy nhất 1 thuộc tính của đối tượng thì không nên dùng with... End with.
Tóm lại:
1. Bằng cách sử dụng With... End With, bạn có thể thực hiện khai báo một loạt các thuộc tính khác nhau thuộc về cùng một đối tượng quy định mà không cần phải chỉ định tên của đối tượng nhiều lần.
2. Khi chỉ cần can thiệp vào duy nhất 1 thuộc tính của đối tượng thì không nên dùng with... End with
|