Vui lòng cho hỏi, Name động có thể gán cho Combobox được không?

Liên hệ QC

Ếch Xanh

Thành viên tích cực
Tham gia
12/8/09
Bài viết
865
Được thích
1,572
Tôi mới học được cách sử dụng Name động, nhưng khi thử gán Name đó vào RowSource của Combobox thì báo lỗi.+-+-+-+
1) Xin cho biết tại sao?
2) Nếu có thể, các Anh Chị hướng dẫn tôi viết code để gán cái Name động vào RowSource của Combobox được không?
Xin chân thành cảm ơn.
 
Hoàn toàn bình thường. Xem file đính kèm.
 

File đính kèm

  • vidu.xls
    53 KB · Đọc: 61
Upvote 0
Hoàn toàn có thể gán 1 Name động làm ListFillRange cho 1 combobox. Nếu Combobox thuộc nhóm Form control thì tự cập nhật khi name động đậy, còn Combobox thuộc nhóm control toolbox thì phải dùng code mỗi khi Name thay đổi. Thí dụ 1 Name:
=OFFSET(Sheet1!$A$1;Sheet1!$C$1;0;COUNTA(Sheet1!$A$1:$A$50)-Sheet1!$C$1;1)

Kích thước và vị trí thay đổi khi thêm dữ liệu hoặc thay đổi tham chiếu C1. Code để cập nhật List có nhiều cách, thí dụ:

Nếu combobox nằm cùng sheet với Data của Name:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Or Target.Column = 1 Then Me.ComboBox1.ListFillRange = "abc"
End Sub

Nếu Combobox nằm khác sheet:

PHP:
Private Sub Worksheet_Activate()
Me.ComboBox1.ListFillRange = "abc"
End Sub

Thêm:
Nếu Combobox nằm trên form, chỉ tự cập nhật khi mở form, còn nếu trong quá trình làm việc trên form có thêm bớt hoặc thay đổi tham chiếu của Name, thì combobox cũng không cập nhật.
 

File đính kèm

  • comboNameDong.xls
    26.5 KB · Đọc: 50
Lần chỉnh sửa cuối:
Upvote 0
Tôi mới học được cách sử dụng Name động, nhưng khi thử gán Name đó vào RowSource của Combobox thì báo lỗi.+-+-+-+
1) Xin cho biết tại sao?
2) Nếu có thể, các Anh Chị hướng dẫn tôi viết code để gán cái Name động vào RowSource của Combobox được không?
Xin chân thành cảm ơn.
Nếu Name trả về một vùng (Range) thì có thể gán được còn Name là mảng thì không được.
 
Upvote 0
Bổ sung thêm cho đầy đủ:

1. Dùng ComboBox thuộc nhóm Form Controls trên Sheet thì khi gán Name động vào thì nó sẽ tự cập nhật danh sách các phần tử.

2. Dùng ComboBox thuộc nhóm ActiveX Controls trên Sheet thì mình phải viết code cập nhật lại vùng dữ liệu cho ComboBox. Ví dụ danh sách được gán Name động tên là List thì chèn code sau vào sheet chứa ComboBox

PHP:
Private Sub ComboBox1_Change()
    Me.ComboBox1.ListFillRange = "List"
End Sub
3. Nếu là ComboBox thuộc nhóm ActiveX Controls trên Form thì cũng cần viết code cập nhật lại danh sách mỗi khi sử dụng ComboBox

PHP:
UserForm1.ComboBox1.RowSource = "List"
Xem thêm file đính kèm

TTP.
 

File đính kèm

  • ComboBox_Dynamicname.xls
    43 KB · Đọc: 56
Lần chỉnh sửa cuối:
Upvote 0
Dear Thanh Phong:

Nếu Combobox nằm trên Form như file của Thanh Phong, sẽ phải gán rowsource trước khi mở form, còn Form của Chibi thì không cần. Tôi tìm ra nguyên nhân là do Thanh Phong chỉ Hide Form, nếu Unload Form thì sẽ không cần. Combobox tự cập nhật khi load form.
 
Upvote 0
Cám ơn các THẦY rất nhiều ạ! Nhờ bài của các THẦY mà em đã mở mang tầm mắt. Kính chúc các THẦY dồi dào sức khỏe, Chúc ngày Chủ nhật thật nhiều niềm vui.
 
Upvote 0
ở đây mình thấy mọi người đang fix sẵn rowsource của combobox sẵn trong phần prototype của combobox bằng định danh Tabe vùng dữ liệu.
giả sửa trong trường hợp ta truy vấn và vì 1 lỗi nào đó ghi đè thông tin mới lên vùng định danh đó thì chương trình có load được cái thông tin mới đó lên không?
 
Upvote 0
ở đây mình thấy mọi người đang fix sẵn rowsource của combobox sẵn trong phần prototype của combobox bằng định danh Tabe vùng dữ liệu.
giả sửa trong trường hợp ta truy vấn và vì 1 lỗi nào đó ghi đè thông tin mới lên vùng định danh đó thì chương trình có load được cái thông tin mới đó lên không?
Bạn đang nhầm lẫn name và table.
 
Upvote 0
ở đây mình thấy mọi người đang fix sẵn rowsource của combobox sẵn trong phần prototype của combobox bằng định danh Tabe vùng dữ liệu.
giả sử trong trường hợp ta truy vấn và vì 1 lỗi nào đó ghi đè thông tin mới lên vùng định danh đó thì chương trình có load được cái thông tin mới đó lên không?
Sao bạn không thử để tự mình đi đến kết luận; Chuyện í đối với bạn khó lắm luôn ru?
 
Upvote 0
ở đây mình thấy mọi người đang fix sẵn rowsource của combobox sẵn trong phần prototype của combobox bằng định danh Tabe vùng dữ liệu.
giả sửa trong trường hợp ta truy vấn và vì 1 lỗi nào đó ghi đè thông tin mới lên vùng định danh đó thì chương trình có load được cái thông tin mới đó lên không?
1. Nhiều người có thói quen rất xấu là khi nói chuyện hay mô tả thì dùng từ rất bừa bãi. Tên sheet, tiêu đề cột, trên thực tế khác mà trong mô tả khác, tên vùng dữ liệu thì lại thay bằng tên Table.

2. Cần gì hỏi. Cái này thuộc thể loại: tự kiểm tra được, không cần hỏi.

Gợi ý: Đặt tên cho vùng dữ liệu là hichic -> trong UserForm_Initialize thiết lập ComboBox1.RowSource là hichic -> trong CommandButton1_Click thay đổi nội dung vài ô trong vùng hichic -> Sau khi mở Form thì mở danh sách thả để xem các mục của ComboBox1 -> nhấn CommandButton1 -> mở lại danh sách của ComboBox1 và so sánh với danh sách lúc trước -> rút ra kết luận.

Những cái có thể tự kiểm nghiệm thì đừng bao giờ hỏi người khác.
Bài đã được tự động gộp:

ở đây mình thấy mọi người đang fix sẵn rowsource của combobox sẵn trong phần prototype của combobox bằng định danh Tabe vùng dữ liệu.
giả sửa trong trường hợp ta truy vấn và vì 1 lỗi nào đó ghi đè thông tin mới lên vùng định danh đó thì chương trình có load được cái thông tin mới đó lên không?
1. Nhiều người có thói quen rất xấu là khi nói chuyện hay mô tả thì dùng từ rất bừa bãi. Tên sheet, tiêu đề cột, trên thực tế khác mà trong mô tả khác, tên vùng dữ liệu thì lại thay bằng tên Table.

2. Cần gì hỏi. Cái này thuộc thể loại: tự kiểm tra được, không cần hỏi.

Gợi ý: Đặt tên cho vùng dữ liệu là hichic -> trong UserForm_Initialize thiết lập ComboBox1.RowSource là hichic -> trong CommandButton1_Click thay đổi nội dung vài ô trong vùng hichic -> Sau khi mở Form thì mở danh sách thả để xem các mục của ComboBox1 -> nhấn CommandButton1 -> mở lại danh sách của ComboBox1 và so sánh với danh sách lúc trước -> rút ra kết luận.

Những cái có thể tự kiểm nghiệm thì đừng bao giờ hỏi người khác.
 
Upvote 0
Thành viên đó chưỡi bậy nên bị đình chỉ cả tháng mất tiêu rồi;
Mong rằng sau đợt Covid19 này sẽ được gặp lại bạn ý!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom