Hỏi về rowsource

Liên hệ QC

quochuy86

Thành viên chính thức
Tham gia
3/5/07
Bài viết
56
Được thích
9
Hix em lập đoạn code sau để lấy dữ liệu cho combobox mà không hiểu sao toàn bị lỗi. các bác cứu em với:

Private Sub UserForm_Activate()
Dim a As String
Dim rag As Range
a = Worksheets("data").Cells(Rows.Count, 2).End(xlUp).Row
Set rag = Sheet1.Range(Sheet1.Cells(47, 2), Sheet1.Cells(a, 2))
Me.ComboBox1.RowSource = "rag"
end sub

không biết em sai ở đâu.
"Me.ComboBox1.RowSource":=\+
 
Hix em lập đoạn code sau để lấy dữ liệu cho combobox mà không hiểu sao toàn bị lỗi. các bác cứu em với:

Private Sub UserForm_Activate()
Dim a As String
Dim rag As Range
a = Worksheets("data").Cells(Rows.Count, 2).End(xlUp).Row
Set rag = Sheet1.Range(Sheet1.Cells(47, 2), Sheet1.Cells(a, 2))
Me.ComboBox1.RowSource = "rag"
end sub

không biết em sai ở đâu.
"Me.ComboBox1.RowSource":=\+

1/ Dim a As String ==> Sai, phải là Long, Interge...
2/ Sheet "data" với Sheet1 có phải là chung một Sheet không? Nếu không phải thì cái "rag" cũng sai nốt
Thân
 
Upvote 0
"Private Sub UserForm_Activate()
Dim a As Long
Dim rag As Range
a = Sheet1.Cells(Rows.Count, 2).End(xlUp).Row
Set rag = Sheet1.Range(Sheet1.Cells(47, 2), Sheet1.Cells(a, 2))
Me.ComboBox1.RowSource = "rag"
end sub"
code của em như trên minhnguyệt xem lại dùm.
nó toàn báo lla dong này sai: Me.ComboBox1.RowSource = "rag" lỗi: "could not set the rowsource property.invalid property value"
- Mình xem trong help thì thấy nó báo là Me.ComboBox1.RowSourc = [string] không biết string là giá trị kiểu jì. Mong mọi người chỉ dùm
 
Upvote 0
"Private Sub UserForm_Activate()
Dim a As Long
Dim rag As Range
a = Sheet1.Cells(Rows.Count, 2).End(xlUp).Row
Set rag = Sheet1.Range(Sheet1.Cells(47, 2), Sheet1.Cells(a, 2))
Me.ComboBox1.RowSource = "rag"
end sub"
code của em như trên minhnguyệt xem lại dùm.
nó toàn báo lla dong này sai: Me.ComboBox1.RowSource = "rag" lỗi: "could not set the rowsource property.invalid property value"
- Mình xem trong help thì thấy nó báo là Me.ComboBox1.RowSourc = [string] không biết string là giá trị kiểu jì. Mong mọi người chỉ dùm

Bạn gửi file lên, tôi sẽ xem giúp. Nói chung chung như thế khó hình dung được bạn sai ở đâu
Thân
 
Upvote 0
to: minhnguyet
to: ptm0412
Thank 2 bạn, mình làm theo ptm được rồi.
Chỗ này cho mình thắc mắc thêm 1 tý.
ví dụ
- "Me.ComboBox1.RowSource = "a" " thì a ở đây sẽ là những giá trị kiểu jì. nếu mình cho a = b47:b48 thì đươc. còn cho .range("b47:b48") lại không được.
- nếu mình define "b47:b48" tên là "a" và cho Me.ComboBox1.RowSource = "a" thì lại được
thanks mọi người
 
Upvote 0
quochuy đã viết:
Mình xem trong help thì thấy nó báo là Me.ComboBox1.RowSourc = [string]
Đó là câu trả lời cho bạn:
- rag là 1 biến kiểu range, người ta cần 1 chuỗi (string)
- "rag" là 1 chuỗi, nhưng không có vùng dữ liệu nào có địa chỉ là rag
- "a" là 1 name đã đặt cho 1 vùng xác định, "a" là chuỗi, vì "a" là 1 cái tên của vùng đó.

Nói thêm, nếu "a" là 1 name đã đặt, và bạn muốn xoá nó, thì có phải bạn dùng:

ThisWorkbook.Names("a").Delete

với a là tên của cái name muốn xoá? So sánh với:

ThisWorkbook.Sheets("Data").Clear

có phải Data là tên của sheet?
 
Upvote 0
to: ptm0412
Oh mình đã hiểu rồi. Vậy string là kiểu giá trị của chuỗi đúng không.

Thân
 
Upvote 0
Mình bận họp đầu giờ không tham gia được, giờ mới gửi bài được.

Mình thấy các bạn vẫn chưa gọn, mình đưa ra 2 đoạn code các bạn tham khảo:

1/Nạp Combobox:
Mã:
Private Sub CommandButton1_Click()
Dim a As Long
a = Sheet1.[a65536].End(xlUp).Row
Me.ComboBox1.RowSource = "Sheet1!a2:b" & a
End Sub

2/ Xóa Combobox:
Mã:
Private Sub CommandButton2_Click()
Me.ComboBox1.RowSource = ""
End Sub

Như vậy, bạn nạp hay xóa đơn giản đi nhiều phải không?
 

File đính kèm

Upvote 0
to:sealand
wow mình đã thử rồi. thấy work rùi. thank
AH mình cón 1 trường hợp nữa:
- nếu range dữ liệu mình đưa vào combobox là 2 hay nhiều mảng dữ liệu rời rạc thì làm sao đưa vào được:
ví dụ: - dữ liệu gồm 2 cột
- cột 1 "a1:a5"
- cột 2 "c1:c5"
(chú ý range ""b1:b5" có dữ liệu, và không đưa 2 dữ liệu cột 1 và cột 2 lại gần nhau được-0-/.)
nếu mình dùng đoạn code sau thì có được không:
me.combobox1.rowsource = "a1:a5"
me.combobox1.rowsource = "a1:a5"
 
Upvote 0
Mình chưa thấy ở đâu đề cập vấn đề này. Nạp theo cách của bạn thì DS 2 sẽ loại bỏ DS1.
Tuy nhiên, ta cũng có thể làm cách sau và kết quả có thể chấp nhận được (Thực ra đây là trò láu cá cứ đưa lên tất, không cần cột nào thì cho độ rộng cột đó bằng 0):
1/Thay vì columnCount=2 bạn thiết lập thành 3.
2/Thay ColumnWidths=40;100 bằng 40;0;100
3/Vùng nạp bạn mở rộng đến vùng cột C: Me.ComboBox1.RowSource = "Sheet1!a2:c" & a
(Bạn xem file ví dụ)
Đây là cách nhanh và dễ dàng nạp combobox nhưng nó lại kém linh hoạt. Để linh hoạt hơn người ta dùng phương thức addItem hay List
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
to: sealand
Cảm ơn bạn đã quan tâm tới chủ đề của mình.
Bạn có thể cho mình 2 ví dụ về addItem và List được không. Mình cũng có nghiên cứu qua về 2 phương thức này nhưng chưa hiểu rõ lắm
Thân!
 
Upvote 0
Bạn xem ví dụ về 3 cách nạp (Để bảo đảm nên xoá trước khi thử cách nạp khác)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
to:sealand
hihi, cảm ơn bạn đã quan tâm. ví dụ của bạn cụ thể quá. Song do mới tìm hiểu về VBA nên mình không hiểu "me.combobox.list () = ?" nhận giá trị như thế nào. mình xem ví dụ trên thì thấy nó nhận giá trị là 1 dãy, đọc trong help thì thấy nó ghi chung chung quá không hiểu đươc. Mong bạn giải thích dùm mình luôn.
Ah, mình không hiểu "listindex ?" có ý nghĩa gì.
 
Upvote 0
me.combobox.list () = có tác dụng load một mảng lên Listbox hay Combobox.Trước hết nạp DL vào mảng rồi load. Nếu là 1 dãy tức là mảng 1 chiều và trên LB hayCB chỉ có 1 cột. Nếu muốn LT hay CB có nhiều cột thì tương ứng mảng phải là 2 chiều.
ListIndes là số thứ tự của 1 Item tính từ 0
 
Upvote 0
to: Sealand
Cảm ơn bạn nhiều. mình đã hiểu rồi. :D
Thân
 
Upvote 0
Bác sealand ơi, nếu trường hợp mình dùng 2 file 1 file chứa combobox và 1 file chứa DATA có cách nào lấy dữ liệu từ file DATA vào combobox để xử lý được không?
Nếu được mong giúp đỡ.
Cảm ơn.
 
Upvote 0
Làm được, nhưng khá oải đấy:
-Dùng kết nối ODCDB.
-Dùng MS Query
-Tận dụng chức năng import External data của Excel
 
Upvote 0
Web KT

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

Back
Top Bottom