Chia sẻ Form mẫu- Sơ đồ- Quy trình xây dựng; - VÌ MỘT CỘNG ĐỒNG XD VIỆT NAM CHUYÊN NGHIỆP

 Quên mật khẩu
 Đăng ký mới
Anh Trần HòeBùi Quốc HưngTrần Hải Nam - Bokingvan
Xem: 4416|Trả lời: 24
Thu gọn cột thông tin

Ý nghĩa câu lệnh With...End With và khi nào nên dùng?

[Lấy địa chỉ]
fubi Đăng lúc 14/4/2014 10:02 | Xem tất |Chế độ đọc

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:

  1. With Selection.Interior
  2.         .Pattern = xlSolid
  3.         .PatternColorIndex = xlAutomatic
  4.         .Color = 65535
  5.         .TintAndShade = 0
  6.         .PatternTintAndShade = 0
  7. 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:

  1. + Cô người mẫu A có làn da trắng như sữa.
  2. + Cô người mẫu A có hàm răng đều như hạt bắp.
  3. + Cô người mẫu A có chân dài tới nách.
  4. + 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:

  1. Với đối tượng cô người mẫu A:
  2.     + làn da trắng như sữa
  3.     + hàm răng đều như hạt bắp
  4.     + chân dài tới nách
  5.     + giọng nói như chim
  6. 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:


  1.         
  2.        Selection.Interior.Pattern = xlSolid
  3.        Selection.Interior.PatternColorIndex = xlAutomatic
  4.        Selection.Interior.Color = 65535
  5.        Selection.Interior.TintAndShade = 0
  6.        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ư:

  1. With Selection.Interior
  2.          .Color = 65535
  3. End With
Sao chép mã
So với câu lệnh:
  1. 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

Đánh giá

Rất hữu ích! Thanks!: 4.2 Mong bạn tiếp tục chia sẻ. Thanks!: 5.0
Chia sẻ hay! Thanks bạn nhé!: 5.0
Chia sẻ hay! Thanks bạn nhé!: 5
  Đăng lúc 4/1/2016 21:38
Rất hữu ích! Thanks!: 5
  Đăng lúc 20/4/2014 01:57
Rất hữu ích! Thanks!: 0
  Đăng lúc 16/4/2014 06:47
Rất hữu ích! Thanks!: 5 Mong bạn tiếp tục chia sẻ. Thanks!: 5
  Đăng lúc 16/4/2014 01:33
Rất hữu ích! Thanks!: 0
  Đăng lúc 15/4/2014 12:04

Số người tham gia 18Uy Tín: +27 Thưởng +27 Thanked +20 Thu lại Lý do
TinKim + 1 Bài hay. Cảm ơn!
thanhmaitran + 1 Thực tiễn. Cám ơn!
rapiersmall + 2 Mong chờ bài tiếp theo. Thanks!
giangnguyen149 + 1 Kinh nghiệm. Cảm ơn!
ozocuong + 1 Bài hay quá. Cảm ơn!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

fclinux Đăng lúc 16/4/2014 00:04 | Xem tất
Vậy đơn giản việc giản đơn macro là lược bỏ đi các thuộc tính không cần thiết, giống như một cô gái có làn da trắng sữa còn các thuộc tình như áo quần thì sẽ bị lột hết để tiện chạy cho nhanh và gọn code è è è

Đánh giá

aida tưởng tượng phong phú thì việc học mới thú ah.  Đăng lúc 16/4/2014 00:28

Số người tham gia 1Thanked +1 Thu lại Lý do
PhanTanTai + 1 Cảm ơn, em đọc cứ thấy buồn cườ.

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

anhluoc Đăng lúc 16/4/2014 09:07 | Xem tất
Vậy cô người mẫu A và cô người mẫu B cùng có làn da trắng... thì như thế nào nhỉ??
Em mò k ra, hic.

Đánh giá

Viết theo câu lệnh VBA: conguoimauA.LanDa = trắng; conguoimauB.LanDa = trắng  Đăng lúc 16/4/2014 09:23

Số người tham gia 2Thanked +3 Thu lại Lý do
ngovancanvba + 2
doducdai + 1 Đồng tình. Cảm ơn!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

Phòng tối |Phiên bản Mobile|Lưu trữ|Tìm bạn|Chia sẻ "Form mẫu- Sơ đồ- Quy trình xây dựng"  Phần mềm dự toán xây dựng excel - Hướng dẫn lập dự toán xây dựng - Phần mềm tư vấn giám sát - Phần mềm quản lý chất lượng xây dựng

GMT+7, 17/8/2019 20:28 , Processed in 0.124496 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

Trả lời nhanh Lên trên Trở lại danh sách