dùng advanced filter để nạp dữ liệu cho combobox (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

nlquynhtram

Thành viên mới
Tham gia
9/11/16
Bài viết
10
Được thích
0
File của mình dùng macro chạy advanced filter lọc range "po_list" để: (1) xóa dữ liệu trùng, (2) nạp dữ liệu cho combobox. Range có tên "po_list" có thể thêm bớt dữ liệu. Do đó, mình muốn dữ liệu của combobox cũng tự update khi range "po_list" thay đổi:

PHP:
Private Sub ComboBox1_GotFocus()Dim Rng As RangeSet Rng = Range("po_list")
Rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _        "G1"), Unique:=True
End Sub

báo lỗi bên dưới:
test.jpg
Hình như là advanced filter chỉ chạy cho range chỉ định như "A1:B10", còn range có tên thì ko chạy được. Xem giúp mình nhé. Thanks.
 

File đính kèm

File của mình dùng macro chạy advanced filter lọc range "po_list" để: (1) xóa dữ liệu trùng, (2) nạp dữ liệu cho combobox. Range có tên "po_list" có thể thêm bớt dữ liệu. Do đó, mình muốn dữ liệu của combobox cũng tự update khi range "po_list" thay đổi:

PHP:
Private Sub ComboBox1_GotFocus()Dim Rng As RangeSet Rng = Range("po_list")
Rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _        "G1"), Unique:=True
End Sub

báo lỗi bên dưới:
View attachment 171099
Hình như là advanced filter chỉ chạy cho range chỉ định như "A1:B10", còn range có tên thì ko chạy được. Xem giúp mình nhé. Thanks.
Bạn dùng Advaned Filter sai, range po_list ấy thiếu tiêu đề. Ngay cả nếu bạn làm bằng tay cũng không được thì lấy gì code chạy được
Sửa lại cũng được nhưng tôi thắc mắc sao bạn không dùng Remove Duplicates cho gọn?
Nói chung là xóa hết code của bạn và thay bằng code này nhé:
Mã:
Private Sub ComboBox1_DropButtonClick()
  Application.ScreenUpdating = False
  With Range("po_list")
    .Copy .Offset(, 6)
    .Offset(, 6).RemoveDuplicates 1, xlNo
  End With
  Application.ScreenUpdating = True
  Me.ComboBox1.ListFillRange = "POFILTER"
End Sub
Ngoài ra cách tốt nhất là code toàn bộ (dùng Dictionary để lọc), không công thức hay name gì cả
 
Lần chỉnh sửa cuối:
Upvote 0
@ndu96081631

: Combobox nạp dữ liệu rồi nhưng bị lỗi không update khi chọn bất kỳ item nào trong list. Nếu remove duplicates ngay trong range po_list thì mới hết bị lỗi này; nhưng như vậy thì hỏng mất bảng data của em. Có cách nào khắc phục không nhỉ?
 
Upvote 0
@ndu96081631

: Combobox nạp dữ liệu rồi nhưng bị lỗi không update khi chọn bất kỳ item nào trong list. Nếu remove duplicates ngay trong range po_list thì mới hết bị lỗi này; nhưng như vậy thì hỏng mất bảng data của em. Có cách nào khắc phục không nhỉ?
Là update cái gì? Trong file của bạn có chỗ nào liên quan đến vụ update vậy?
 
Upvote 0
ý em là khi chọn item nào trong list của combobox, thì giá trị của combobox lúc đó phải là selected item. Nhưng lỗi ở đây là combobox không thay đổi giá trị khi chọn các item khác nhau, mà chỉ thể hiện item đầu tiên trong list. Nhưng mà em cũng đã tìm ra cách khắc phục là chuyển toàn bộ code của anh qua event combobox gotfocus.

Private Sub CB_PO_GotFocus() Application.ScreenUpdating = False
With Sheets("PO").Range("po_list")
.copy .Offset(, 6)
.Offset(, 6).RemoveDuplicates 1, xlNo
End With
Application.ScreenUpdating = True
Me.CB_PO.ListFillRange = "POFILTER"
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom