Tại sao Validation list ko sort theo ý muốn!

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Tôi đưa file này lên nhờ các bạn xem giúp! Có cái gì đó ko ổn mà tôi lại ko nhìn ra dc nó là chổ nào!
Xin trình bày file này như sau:
1> Sheet MC chứa dử liệu nhập gồm 2 cột: Tiếng AnhTiếng Việt (và nó cũng đã dc đặt name trong Define Name)
2> Ở sheet REQUEST, nếu bấm vào cột MACHINE NAME thì danh sách bên sheet MC sẽ dc sort theo cột A... Còn nếu ta bấm vào cột TÊN MÁY thì sheet MC sẽ dc sort theo cột B... Code của nó như sau:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set Rng = Sheet1.Range("DS")
  Set Odr1 = Sheet1.Range("A2")
  Set Odr2 = Sheet1.Range("B2")
  If Not Intersect(Range("B20:C30"), Target) Is Nothing Then
     Select Case Target.Column
      Case 2: Rng.Sort Key1:=Odr1, Order1:=xlAscending
      Case 3: Rng.Sort Key1:=Odr2, Order1:=xlAscending
     End Select
  End If
End Sub
3> Khi các bạn chọn 1 trong 2 cột MACHINE NAME hoặc TÊN MÁY rồi chuyển sang sheet MC để xem thì cũng thấy rõ ràng dử liệu đã dc sort chính xác... Thế nhưng Validation list thì lại hiển thị sai bét (ngay ở dòng đầu tiên của list đã thấy sai)... chả hiểu tại sao lại vậy!
-----------------------
Tôi đã thí nghiệm bằng cách:
1> Tình nghi rằng lổi có thể do code Worksheet_Change ở phía trên gây ra và đã xóa thử.. nhưng vẫn ko ăn thua gì
2> Copy dử liệu này sang file mới thì nó sort ngon lành cả ở sheet MC lẩn trong Validation List
-----------------------
Vậy vấn đề là ở chổ nào? Tại sao Validation list trong sheet REQUEST lại hiển thị ko đúng với Data Source?
ANH TUẤN
 

File đính kèm

Oh... hô... Tôi đã phát hiện ra vấn đề...
Chủ đề này xin đóng lại nhé!
Chân thành cảm ơn!
ANH TUẤN
 
Upvote 0
Oh... hô... Tôi đã phát hiện ra vấn đề...
Chủ đề này xin đóng lại nhé!
Khoan khoan!
Anhtuan phát hiện cái gì dạy lại cho tớ với! Tìm hoài không ra!
 
Upvote 0
He... he... Đúng là code ko có sai, mà list lại hiện bậy... Đệ tìm suốt cả buối tối hôm qua mới phát hiện ra 1 lổi ngớ ngẩn: Sheet MC có mấy dòng bị ẩn.. Unhide nó lên thì hết chuyện...
Mắc cười quá đi mất! Nhưng biết thêm 1 kinh nghiệm: Sort thì nó bỏ qua dòng ẩn.. Còn Validation list thì tính luôn cả những cell bị ẩn!
ANH TUẤN
 
Upvote 0
cái này hay đấy còn cái này Sheet MC là gì zạy anh tuấn!
 
Upvote 0
cái này hay đấy còn cái này Sheet MC là gì zạy anh tuấn!
Sheet MC chỉ là phần nhập liệu thôi mà bạn... Dử liệu thì tùy theo chuyên ngành, mạnh ai nấy biết... Chúng ta cũng đâu cần quan tâm làm gì, đúng ko? Quan trong nhất vẫn là hiểu dc phương pháp xử lý dử liệu...
.......................................................
Ah... nhân đây tôi hỏi luôn 1 chuyện nữa: Đoạn code trên nếu để yên thế thì chạy rất "ngọt".. nhưng nếu tôi thêm Application.ScreenUpdating = FalseApplication.ScreenUpdating = True vào đầu và cuối đoạn code thì màn hình lại giật giật...
Vô lý thế nhỉ
???
ANH TUẤN
 
Upvote 0
He... he... tìm suốt cả buối tối hôm qua mới phát hiện ra 1 ngớ ngẩn: Sheet MC có mấy dòng bị ẩn.. Unhide nó lên thì hết chuyện...
Mắc cười quá đi mất! Nhưng biết thêm 1 kinh nghiệm: Sort thì nó bỏ qua dòng ẩn.. Còn Validation list thì tính luôn cả những cell bị ẩn!ANH TUẤN
Mình cũng vừa bị như AnhTuan1066 vớ phương thức Find()
Nó lại không chịu tìm dữ liệu trong vùng bị ẩn, mới chết mình chứ!
Hẹn khi nào nghiền ngẫm đủ lễ bộ sẽ giới thiệu những lươm lặc của mình về phương thức này!

Tái ngộ sớm!!
 
Upvote 0
Sheet MC chỉ là phần nhập liệu thôi mà bạn... Dử liệu thì tùy theo chuyên ngành, mạnh ai nấy biết... Chúng ta cũng đâu cần quan tâm làm gì, đúng ko? Quan trong nhất vẫn là hiểu dc phương pháp xử lý dử liệu...
.......................................................
Ah... nhân đây tôi hỏi luôn 1 chuyện nữa: Đoạn code trên nếu để yên thế thì chạy rất "ngọt".. nhưng nếu tôi thêm Application.ScreenUpdating = FalseApplication.ScreenUpdating = True vào đầu và cuối đoạn code thì màn hình lại giật giật...
Vô lý thế nhỉ
???
ANH TUẤN

Đoạn code đó anh thêm thuộc tính ScreenUpdating là không cần thiết và nó làm giật màn hình mỗi khi có sự thay đổi Target là đúng rồi vì nó Update mà.

ScreenUpdating thường dùng trong các thủ tục hoặc hàm có vòng lặp để tránh hiện tượng giật màn hình sau khi thực hiện việc tính toán/ cập nhật dữ liệu nào đó.

TP.
 
Upvote 0
Cảm ơn các bạn! Nhân đây tôi hỏi thêm 1 chút!
Ở code trên tôi có dùng đoạn:
Set Rng = Sheet1.Range("DS")
Vậy có phải: Nếu đã Set Range rồi thì mình khỏi cần phải Dim nữa ko?
ANH TUẤN
 
Upvote 0
Cảm ơn các bạn! Nhân đây tôi hỏi thêm 1 chút!
Ở code trên tôi có dùng đoạn:
Set Rng = Sheet1.Range("DS")
Vậy có phải: Nếu đã Set Range rồi thì mình khỏi cần phải Dim nữa ko?
ANH TUẤN

Anh nên khai báo biến thuộc kiểu gì trước khi dùng. Sau đó anh dùng Set để gán đối tượng cho biến.

Trong bài anh thấy không dùng Dim vẫn chạy ngon lành đúng không /-*+/. Anh thêm Option Explicit ở dòng trên đầu của Code Windows rồi chạy thì sẽ thấy!

TP.
 
Upvote 0
Tôi hỏi thêm: Ở code trên tôi có dùng đoạn:
Set Rng = Sheet1.Range("DS")
Vậy có phải: Nếu đã Set Range rồi thì mình khỏi cần phải Dim nữa ko?
Như TT Phong đã trả lời;
Mình muốn nói rõ thêm thế này AnhTuan1066 à:
Đối với những người tự học lập trình vỏ vẽ như mình với cậu thì tất tần tật đều phải khai báo mà người ta hay gọi là tường minh;
Hơn nữa, tên biến nên có cả từ viết hoa & viết thường trong đó, để tận dụng lợi thế soát lỗi chính tả trong các dòng lệnh của VBA mà ta vừa nhập xong;
Mình cho rằng những biến có duy 1 chữ cái là dành cho những nhà lập trình chuyên nghiệp hay 'Hàn lâm', chứ không phải dành cho chúng ta, những kẻ tự học!
Nếu anh là người tự học mà dùng tên biến như thế, thì mình cho là đang học đòi vô lối,
Xin lỗi, nếu ai đó phật í, nha!
 
Upvote 0
Như TT Phong đã trả lời;
Mình muốn nói rõ thêm thế này AnhTuan1066 à:
Đối với những người tự học lập trình vỏ vẽ như mình với cậu thì tất tần tật đều phải khai báo mà người ta hay gọi là tường minh;
Hơn nữa, tên biến nên có cả từ viết hoa & viết thường trong đó, để tận dụng lợi thế soát lỗi chính tả trong các dòng lệnh của VBA mà ta vừa nhập xong;
Mình cho rằng những biến có duy 1 chữ cái là dành cho những nhà lập trình chuyên nghiệp hay 'Hàn lâm', chứ không phải dành cho chúng ta, những kẻ tự học!
Nếu anh là người tự học mà dùng tên biến như thế, thì mình cho là đang học đòi vô lối,
Xin lỗi, nếu ai đó phật í, nha!
Oh... hô...đại ca nhìn nhầm hay sao chứ... tên biến em dùng cả HOA lẩn thường (học theo đại ca đấy)... và cũng hỏng có cái nào dùng 1 chử cái cả...
he... he...
Nhưng dù sao cũng cảm ơn đại ca về những bài học vở lòng... rất bổ ích cho những người mới như em!
ANH TUẤN
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Web KT

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

Back
Top Bottom