Hỏi về cách kiểm tra cell hiện tại có định dạng drop list hay không

Liên hệ QC

download9719

Thành viên mới
Tham gia
4/5/08
Bài viết
18
Được thích
1
Chào các bác,

Trong VBA, cách nào để kiểm tra cell hiện tại có định dạng drop list, các bác chỉ giùm em.+-+-+-+

Cụ thể:
- Nếu cell đó là drop list, thì khi người dùng chọn(hay nhập) giá trị xong, cell sẽ đổi màu
- Nếu cell đó không là drop list, thì dù người dùng có nhập đúng dữ liệu có khai trong drop list, cell vẫn bình thường (vì là cell bình thường nên nhập bình thường).

Mong các bác giúp đỡ.
 
Món này dựa trên đoạn code:
Cells.SpecialCells(xlCellTypeAllValidation)
chắc ko có vấn đề.. nhưng tôi muốn biết bạn muốn đổi màu thế đễ làm gì?
-Sợ nhập sai cũng ko đúng, vì đã là Validation thì nó đâu cho phép bạn nhập sai
-Muốn người ta chú ý đây là cell có Validation cũng ko đúng.. vì theo như bạn nói là cell chỉ đổi màu khi nhập xong cơ mà
Vậy là sao đây? Mục đích?
ANH TUẤN

Không biết trong thuộc tính của rang và cell có cái nào xác định là range/cell đó có validation hay không? Đại khái như Range("gì đó").validation = true không nhỉ?
Giống vầy nè Kiệt oi:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Set Rng = Cells.SpecialCells(xlCellTypeAllValidation)
  If Not Intersect(Rng, Target) Is Nothing Then
    If Target <> "" Then Target.Interior.ColorIndex = 6
  End If
End Sub
Nhưng tôi thật sự chưa hiểu cái này làm ra với mục đích gì?
ANH TUẤN
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Món này dựa trên đoạn code:
Cells.SpecialCells(xlCellTypeAllValidation)
chắc ko có vấn đề.. nhưng tôi muốn biết bạn muốn đổi màu thế đễ làm gì?
-Sợ nhập sai cũng ko đúng, vì đã là Validation thì nó đâu cho phép bạn nhập sai
-Muốn người ta chú ý đây là cell có Validation cũng ko đúng.. vì theo như bạn nói là cell chỉ đổi màu khi nhập xong cơ mà
Vậy là sao đây? Mục đích?
ANH TUẤN

Mục đích là thế này:
- Trong 1 Sheet có những chỗ định dạng drop list (Vd là OK, NG), nếu chọn OK thì chuyển màu đen, nếu là NG thì đổi thành màu đỏ
- Như thế, những cell dù không có định dạng drop list, khi người dùng nhập OK thì cũng bị chuyển thành màu đen (mặc dù là cell bình thường)

Giống vầy nè Kiệt oi:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Set Rng = Cells.SpecialCells(xlCellTypeAllValidation)
  If Not Intersect(Rng, Target) Is Nothing Then
    If Target <> "" Then Target.Interior.ColorIndex = 6
  End If
End Sub
Nhưng tôi thật sự chưa hiểu cái này làm ra với mục đích gì?
ANH TUẤN


Cám ơn bác anhtuan1066, em đã hiểu rồi. Tóm lại là như sau phải không bác:

Set Rng = Cells.SpecialCells(xlCellTypeAllValidation)
If Not Intersect(Rng, Target) Is Nothing Then 'Nếu không phải định dạng droplist
'xử lý....
End If

→Em hiểu thế có gì không đúng, mong bác chỉ giúp!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Mục đích là thế này:
- Trong 1 Sheet có những chỗ định dạng drop list (Vd là OK, NG), nếu chọn OK thì chuyển màu đen, nếu là NG thì đổi thành màu đỏ
- Như thế, những cell dù không có định dạng drop list, khi người dùng nhập OK thì cũng bị chuyển thành màu đen (mặc dù là cell bình thường)
Ôi.. làm gì có vụ này chứ... Bạn tô màu có điều kiện nghĩa là dùng Conditional Formating, đúng ko? Vậy trước đó bạn chỉ quét chọn các cell này thôi thì làm gì ảnh hưởng đến cell khác chứ....
Gợi ý bạn chọn nhanh vùng có Validation: Bấm Ctrl + G, bấm nút Special, check vào mục "Data Validation" rồi OK là tất cả các vùng có Validation sẽ dc chọn... Lúc này bạn vào Conditional Formating và viết công thức tô màu thì sẽ ko có chuyện các vùng khác bị ảnh hưởng!
Mến
ANH TUẤN
 
Upvote 0
Giống vầy nè Kiệt oi:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Set Rng = Cells.SpecialCells(xlCellTypeAllValidation)
  If Not Intersect(Rng, Target) Is Nothing Then
    If Target <> "" Then Target.Interior.ColorIndex = 6
  End If
End Sub
Nhưng tôi thật sự chưa hiểu cái này làm ra với mục đích gì?
ANH TUẤN

Em chỉ để học thêm hàm thôi anh à. Biết đâu có thể áp dụng sau này nếu cần. Cảm ơn anh.

Mục đích là thế này:
- Trong 1 Sheet có những chỗ định dạng drop list (Vd là OK, NG), nếu chọn OK thì chuyển màu đen, nếu là NG thì đổi thành màu đỏ
- Như thế, những cell dù không có định dạng drop list, khi người dùng nhập OK thì cũng bị chuyển thành màu đen (mặc dù là cell bình thường)
Trời, vậy thì đâu cần viết code chi cho mệt ta, khi tạo droplist/validation thì dù gì cũng phải chọn vùng rồi mới set validation, lúc đó sao không chọn condition format luôn cho tiện không????
 
Upvote 0
Đây! Gữi bạn file ví dụ này... chỉ tô màu trong vùng có Validation mà thôi... những nơi khác có bị ảnh hưởng gì đâu chứ!
Và thậm chí chả cần dùng tí code nào!
ANH TUẤN

Em chỉ để học thêm hàm thôi anh à. Biết đâu có thể áp dụng sau này nếu cần. Cảm ơn anh.


Trời, vậy thì đâu cần viết code chi cho mệt ta, khi tạo droplist/validation thì dù gì cũng phải chọn vùng rồi mới set validation, lúc đó sao không chọn condition format luôn cho tiện không????
Có trường hợp thế này: Người ta tạo Validation trước, sau đó mới nghĩ ra vụ tô màu.. Nhưng trên bãng tính lại có rất nhiều vùng chứa Validation và ko nằm liên tục với nhau, khi ấy nếu muốn chọn cùng 1 lúc tất cả các vùng này thì... hơi khó nếu như ko biết đến chức năng Goto\Special....
ANH TUẤN
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Gợi ý bạn chọn nhanh vùng có Validation: Bấm Ctrl + G, bấm nút Special, check vào mục "Data Validation" rồi OK là tất cả các vùng có Validation sẽ dc chọn... Lúc này bạn vào Conditional Formating và viết công thức tô màu thì sẽ ko có chuyện các vùng khác bị ảnh hưởng!
Mến
ANH TUẤN

Cám ơn bác anhtuan1066 nhiều, tuyệt vời!
Em đã hiểu rồi.

>Bác anhtuan1066, Bác ca_dafi
Cảm ơn hai bác đã nhiệt tình chỉ dẫn.

Khi có gì không hiểu, em lại nhờ các bác chỉ dẫn giùm!

Đây! Gữi bạn file ví dụ này... chỉ tô màu trong vùng có Validation mà thôi... những nơi khác có bị ảnh hưởng gì đâu chứ!
Và thậm chí chả cần dùng tí code nào!
ANH TUẤN

Xin lỗi, cho em hỏi thêm một chút!
①Trong file, bác dùng Condition Formatting với điều kiện được nhập trực tiếp("OK", "NG").
Giải sử trong Sheet2, em đặt tên vùng dữ liệu(chứa OK, NG) là 「result」, khi đó em phải nhập điều kiện thông qua tên 「result」 này được không bác?

②Khi em làm thử Condition Formatting, chỉ thấy tối đa có 3 điêu kiện. Vậy khi dữ liệu trong drop list nhiều, thì không áp dụng cách này được sao bác (※Hay có cách nào set thêm số điêu kiện tối đa?)

Em gửi kèm file!
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Đúng là mỗi 1 cell chỉ cho set tối đa 3 điều kiện mà thôi... Vậy bạn nên gói ghém sao cho vừa..
Còn việc bạn đặt name cho vùng điều kiện là Result rồi CF theo điều kiện này thì bạn phải gõ công thức trong CF là:
=OR(địa chỉ cell, Result)
Tôi đang đoán bạn muốn điều gì đó trong file thật của mình, có thể đưa lên cho mọi người xem dc ko?
ANH TUẤN
 
Upvote 0
Đúng là mỗi 1 cell chỉ cho set tối đa 3 điều kiện mà thôi... Vậy bạn nên gói ghém sao cho vừa..
Còn việc bạn đặt name cho vùng điều kiện là Result rồi CF theo điều kiện này thì bạn phải gõ công thức trong CF là:
=OR(địa chỉ cell, Result)
Tôi đang đoán bạn muốn điều gì đó trong file thật của mình, có thể đưa lên cho mọi người xem dc ko?
ANH TUẤN

À, em chỉ đang tự tạo bảng kế hoạch cho mình thôi, không có gì đặc biệt cà. Vì công việc đôi khi hơi bận, nên không quản lý đúng tiến trình của mình.

--------------------------------------------------------------------
Nội dung: chính yếu gồm 3phần
①Kế hoạch năm: biểu hiện kế hoạch (mục tiêu) qua từng tháng
②Kế hoạch tháng: biều hiện lịch cụ thể trong tháng qua 4 tuần
③Kế hoạch tuần: biểu hiện lịch trong tuần qua từng ngày
→Trong mỗi sheet kế hoạch đều có 3 phần chính:
・nội dung công việc
・kết quả (đánh giá) (→OK, NG, 80%, 50%, < 50%....)
・ghi chú (lý do...khi trễ so với tiến trình)
--------------------------------------------------------------------

(※Sau này, khi update(thêm sheet cho tháng mới, năm mới, kết quả...), thì không phải chỉnh sửa trong code.)

Em đưa lên dưới đây (※em mới bắt đầu viết thôi, chưa xong được gì...)
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom