saobekhonglac
Thành viên mới
- Tham gia
- 1/11/08
- Bài viết
- 1,565
- Được thích
- 1,454
- Giới tính
- Nam
Dùng name như sau để tạo ValidationChào anh/chị.
Mình có file excel. Tại sheet TH từ C2 đến C21 mình muốn dùng Data Validation và khóa lại chỉ cho chọn 1 lần (chi chọn 1 giá trị thì sẽ không được chọn lại giá trị khác). Nhờ anh/chị hướng dẫn giúp mình.
Cám ơn.
List=OFFSET(TH!$D2:$G2,,,--(TH!$C2=""))
Dùng name như sau để tạo Validation
Đương nhiên người ta có thể xóa rồi chọn lại.Mã:List=OFFSET(TH!$D2:$G2,,,--(TH!$C2=""))
Vậy thì Protect Sheet, PW là 123Nếu người ta xóa và chọn lại thì cũng như không. Mình thấy có bài người ta cho chọn xong rồi thì mũi tên nó mờ luôn.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range
If Not Intersect(Target, [C2:C21]) Is Nothing Then
ActiveSheet.Unprotect "123"
For Each Cll In Target
If Cll.Value <> Empty Then
With Cll
.Locked = True
.FormulaHidden = True
End With
Else
With Cll
.Locked = False
.FormulaHidden = False
End With
End If
Next Cll
ActiveSheet.Protect "123"
End If
End Sub
File Excel đã cho mở rồi thì người ta muốn làm gì làm, không cấm được. Dùng Macro mà người ta Disable Macro thì cũng như không.Nếu người ta xóa và chọn lại thì cũng như không. Mình thấy có bài người ta cho chọn xong rồi thì mũi tên nó mờ luôn.
Vậy thì Protect Sheet, PW là 123
Nếu muốn xoá phải mở PW mới xoá làm lại được.
Ô nào chọn rồi không chọn lại được luôn, khỏi phải mờ mờ...
Dùng VBA nhé.
Chép code này vào VBE của sheet "TH"
PHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim Cll As Range If Not Intersect(Target, [C2:C21]) Is Nothing Then ActiveSheet.Unprotect "123" For Each Cll In Target If Cll.Value <> Empty Then With Cll .Locked = True .FormulaHidden = True End With Else With Cll .Locked = False .FormulaHidden = False End With End If Next Cll ActiveSheet.Protect "123" End If End Sub
Vậy thì Protect Sheet, PW là 123
Nếu muốn xoá phải mở PW mới xoá làm lại được.
Ô nào chọn rồi không chọn lại được luôn, khỏi phải mờ mờ...
Dùng VBA nhé.
Chép code này vào VBE của sheet "TH"
PHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim Cll As Range If Not Intersect(Target, [C2:C21]) Is Nothing Then ActiveSheet.Unprotect "123" For Each Cll In Target If Cll.Value <> Empty Then With Cll .Locked = True .FormulaHidden = True End With Else With Cll .Locked = False .FormulaHidden = False End With End If Next Cll ActiveSheet.Protect "123" End If End Sub