Tác động đến các combobox trong worksheets

  • Thread starter Bình_OverAC
  • Ngày gửi
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Em có Một số các combox được tạo ra trên worksheet (chứ không phải trên form).
Và em muốn dùng VBA để thay đổi một số properties của combox này nhưng không biết phải làm thế nào mong các bác giúp đở
 
Khóa học Quản trị dòng tiền
L

Longlv

Sơ cấp
21/10/05
44
1
8
46
Hanoi
NguyênBình nói:
Em có Một số các combox được tạo ra trên worksheet (chứ không phải trên form).
Và em muốn dùng VBA để thay đổi một số properties của combox này nhưng không biết phải làm thế nào mong các bác giúp đở

Bạn thử viết thủ tục trên VBA của worksheet xem.
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Quái lạ! Sao hôm trước em làm không được bây giờ thì lại được rồi mà ở đâu cũng được chứ không phải ở trong worksheet mới làm được.
Cám ơn bac longlv
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear all,
--------
Việc điều khiển các control thuộc về vấn đề kỹ thuật. Tôi xin phép các cao thủ xin góp ý như thế này:
Truy xuất đến thuộc tính của đối tượng nào đó phụ thuộc vào các khai báo biến/thủ tục. Hơn nữa phạm vi và tầm ảnh hưởng của các biến/thủ tục phụ thuộc vào từ khoá khai báo (Public, Private, Dim...)
Bạn vẫn có thể truy xuất đến các thuộc tính của điều khiển từ một module chuẩn (standard module) chứ không bắt buộc phải từ "module của sheet" (module chứac các sự kiện - nói nôm na là vậy) có chứa điều khiển đó. Cú pháp:
[Workbook.][Worksheet.]<Control>.<Property>
Bạn lưu ý là nếu bạn đang ở một module khác với "module của sheet" thì cách truy cập này bạn có thể không được hỗ trợ Ctrl + PaceBar.
Theo tôi, để dễ đọc và dễ quản lý, bạn lên khai báo một điều khiển với kiểu là kiểu của điều khiển được bạn vẽ trên sheet sau đó gán điều khiển trên sheet vào điều khiển mà bạn đã khai báo:
Dim <myControl> as <ControlType>
Set <myControl>=[Workbook.][Worksheet.]<Control>
Sau đó làm việc với <myControl> này bình thường.
 
Sửa lần cuối:
L

Longlv

Sơ cấp
21/10/05
44
1
8
46
Hanoi
To Dao Viet Cuong : Bác Cường có thể cho mọi người biết sự khác biệt của combobox lấy từ Form với combobox lấy từ control toolbox không? Cảm ơn bác nhiều.
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear Longlv,
------------
Bạn hỏi vậy, mình xem lại câu hỏi của Nguyên Bình:
NguyênBình nói:
Em có Một số các combox được tạo ra trên worksheet (chứ không phải trên form).
Theo mình hiểu thì Nguyên Bình đang đề cập đến ComboBox chứ không phải là Drop Down được vẽ từ Forms toolbar. Do đó cách giải thích của mình có thể chưa được triệt để. Nếu bạn thật sự muốn so sánh hai điều khiển này thì chúng ta sẽ có rất nhiều điều để nói! Trong phạm vi chủ đề của Nguyên Bình, mình xin phép không đề cập ở đây!
 
paulsteigel

paulsteigel

Trung cấp
13/11/05
103
0
16
48
Hoà Bình
www.sfdp.net
Tớ trả lời hộ nào...
Về cơ bản Combo Box trên Excel được phân làm 2 nhóm sau:
1. Combo box nằm trong bộ điều khiển của Excel:
Đây là bộ điều khiển viết riêng của Excel và có thể đặt trực tiếp vào các trang tính của excel. Các điều khiển này có thể làm việc trực tiếp với các đối tượng của trang tính.
Hãy tưởng tượng thế này: Trang tính excel như một form và chúng ta bổ sung các điều khiển trực tiếp vào nó như khi thiết kế form trong VBA. Chỉ có điều khác, sau khi kết thúc thiết kế, ta phải đưa Trang tính về chế độ chạy bằng cách bật công tắc trên thanh công cụ Form Control hoặc bật chế độ Protect Sheet. (Khác với Form trong VBA - ta cần bấm F5 đúng không)
Các đối tượng này nằm trên thanh công cụ Form control.
Sự kiện liên quan đến loại đối tượng này sẽ gọi trực tiếp đến một thủ tục nằm trong Module của Workbook hoặc trong module của worksheet, tuỳ theo ta gán cho nó thủ tục nào. Và lưu ý là thủ tục của các đối tượng này không giống như thủ tục sự kiện của các điều khiển.
2. Combo box trong bộ thư viện MsForm Control 2.0
Cái này chính là các điều khiển như ta nhìn thấy trên thanh công cụ khi thiết kế form trên VBA. Excel cho phép chúng ta nhúng các điều khiển này vào trang tính qua thủ tục embed.
Để đưa các đối tượng này vào sheet ta chỉ cần chọn Thanh công cụ Control Toolbox thôi.
Sau khi kéo thả một đối tượng vào Sheet, ta có thể thấy được đoạn mã sau trên thanh công thức của bảng tính.
=EMBED("Forms.ComboBox.1","")
Với các đối tượng này, chúng ta có thể viết mã sự kiện trực tiếp cho nó giống như một điều khiển thông thường của Form trong VBA. Bạn chỉ cần nhấn kép một đối tượng điều khiển này là có thể bật màn hình soạn thảo VBA thôi.
Sau khi kéo thả xong, các điều khiển này sẽ sẵn sàng để thực hiện mà không cần khoá như trong phần1.
Trên đây là một số giải thích để các bạn có thể hiểu rõ. Nếu có gì chưa rõ, các bạn cứ đặt câu hỏi nhé.
Nay kính thư.
 
Sửa lần cuối:
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear all,
--------
Bác Paulsteigel phân tích như vậy bọn em còn hỏi thêm được gì nữa.
Vấn đề đã được đưa ra đây thì em xin phép góp ý thêm thế này.
Nếu xem xét ở góc độ thiết kế, hai điều khiển này có sự khác nhau tương đối:
- Một là (em chỉ làm rõ ý của bác Pauls): Drop down trên Forms toolbar chỉ có thể được vẽ (thiết kế) trên Sheet - chúng ta không làm việc với nói trên VBA Design. Ngược lại khi làm việc với điều khiển này, bạn không phải bật công tắc Design Mode để vào thiết kế giống ComboBox
- Hai là tập hợp các thuộc tính của chúng khác nhau: nói cho rõ hơn thì Drop Down không có thuộc tính (Properties). Điều mà có thể bạn quan tâm nhiều nhất đến điều khiển này là thẻ Control trong bảng Format Control.
- Ba là thủ tục sự kiện: Như bác pauls đã nói, thủ tục của các Drop Down không giống như thủ tục sự kiện của các điều khiển. Hầu như bạn không thể làm được gì ngoài việc phải assign hay chỉnh sửa vĩ lệnh macro cho Drop Down. Với Combobox, bạn có thể lựa chọn các sự kiện và xây dựng chúng như các đối tượng khác.
Đây là cách hiểu của em về chúng, nếu sai thì mong được các bác góp ý!
 

Xem nhiều

Webketoan Zalo OA