ndhmoney686
Thành viên thường trực




- Tham gia
- 25/4/12
- Bài viết
- 376
- Được thích
- 104
có nghĩa là, những cell trên những dòng chưa bị khóa (có chứa công thức hoặc không có công thức- vì những cell trên những dòng đã khóa thì nó bị khóa chung với dòng đó rồi) đều có định dạng Clocked & hidden.
làm sao mà làm được đây bạn? vì bạn muốn định dạng thì file phải ở trạng thái unprotect.
còn khi đã protect rồi thì làm sao mở được format để dịnh dạng???
không biết hiểu có đúng ý bạn ko?
còn bạn muốn tất cả các cell chứa cthức đều bị khóa, thì trước khi nó thực hiện lệnh protect, chép đoạn mã này dzo
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
Selection.Locked = True
Selection.FormulaHidden = True
.......
Next
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
Selection.Locked = True
Selection.FormulaHidden = True
Protect "123", AllowFiltering:=True
................
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim Cl As Range
If Target.Column = 2 Then
Unprotect "1012096868"
Cells.Locked = False
For Each Cl In Range([B6], [B65536].End(3))
If UCase(Cl.Value) = "R" Then Rows(Cl.Row).EntireRow.Locked = True
Next
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
Selection.Locked = True
Selection.FormulaHidden = True
Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingColumns:=True, AllowFiltering:=True
End If
End Sub
Với đoạn code trên. Thì các vấn để em nêu ở trên đã được giải quyết và rất Ok. Một lần nữa Em xin cảm ơn các Anh Chị đã giúp Em code trên.
Bây giờ có một vấn để nhờ các Bạn giúp mình thêm như sau:
- Các Bạn bổ sung thêm tính năng cho sửa cột "Format columns"
- Và hiện tại có một bất tiện nhỏ như sau: ví dụ khi mình đang ở dòng thứ 200. Mình chọn khóa dòng 200 đó xong một cái, thì màn hình nó lại quay về các dòng ở trên cùng. Làm cho mỗi lần thao tác khóa dòng lại phải kéo chuột xuống dòng hiện tại ở phía dưới. Các bạn có cách nào để khóa xong một cái thì con trỏ chuột nó vẫn ở dòng hiện tại, ko bị chạy đi chỗ khác.
Mong các Bạn giúp đỡ. Cảm ơn nhiều!
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim Cl As Range
If Target.Column = 2 Then
Unprotect "123"
Cells.Locked = False
For Each Cl In Range([B6], [B65536].End(3))
If UCase(Cl.Value) = "R" Then Rows(Cl.Row).EntireRow.Locked = True
Next
'Selection.SpecialCells(xlCellTypeFormulas, 23).Select
'Exit Sub
With Selection.SpecialCells(xlCellTypeFormulas, 23)
.Locked = True
.FormulaHidden = True
End With
Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingColumns:=True, AllowFiltering:=True
End If
End Sub
thử vậy xem
Mã:Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Dim Cl As Range If Target.Column = 2 Then Unprotect "123" Cells.Locked = False For Each Cl In Range([B6], [B65536].End(3)) If UCase(Cl.Value) = "R" Then Rows(Cl.Row).EntireRow.Locked = True Next With Selection.SpecialCells(xlCellTypeFormulas, 23) .Locked = True .FormulaHidden = True End With Protect "123", AllowFormattingColumns:=True, AllowFiltering:=True End If End Sub