Sonychuong
Thành viên mới

- Tham gia
- 15/5/20
- Bài viết
- 10
- Được thích
- 4
Hi các bậc thầy cô, ACE trong Diễn đàn.
Em có 1 code khoá dòng Excel theo điều kiện cho trước, code khi khoá thì khoá cả dòng Excel khi thoả điều kiện. Nhưng trong file chỉ muốn khoá dòng tương ứng số cột từ 1 đến 9 (hoặc theo số cột qui định) chứ không phải khoá luôn cả dòng đó . Em nhờ các bậc thầy cô, ACE giúp em với .
Code như sau :
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim Cl As Range, iR As Long, ra As Range, i As Long
If Intersect(Target, Union(Me.Columns(9), [A1])) Is Nothing Then Exit Sub
With Application
.ScreenUpdating = False
.EnableEvents = False
Set Cl = Me.Range(Me.Range("I8"), Me.Range("I100").End(xlUp))
iR = Cl.Rows.Count
Set ra = Me.Range("A8").Resize(iR, 9)
Me.Unprotect "123"
Me.Cells.Locked = False
If Me.Range("A1") <> 1 Then
For i = 1 To iR
If UCase(Cl(i)) = "R" Then
Cl.Rows(i).EntireRow.Locked = True '( => Em nghĩ vấn đề nó nằm chỗ này nhưng không biết cách xử lý)
End If
Next
Me.Protect "123", DrawingObjects:=True, AllowInsertingRows:=True, AllowDeletingRows:=True, AllowFiltering:=True
End If
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Xin cảm ơn ạ !
Em có 1 code khoá dòng Excel theo điều kiện cho trước, code khi khoá thì khoá cả dòng Excel khi thoả điều kiện. Nhưng trong file chỉ muốn khoá dòng tương ứng số cột từ 1 đến 9 (hoặc theo số cột qui định) chứ không phải khoá luôn cả dòng đó . Em nhờ các bậc thầy cô, ACE giúp em với .
Code như sau :
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim Cl As Range, iR As Long, ra As Range, i As Long
If Intersect(Target, Union(Me.Columns(9), [A1])) Is Nothing Then Exit Sub
With Application
.ScreenUpdating = False
.EnableEvents = False
Set Cl = Me.Range(Me.Range("I8"), Me.Range("I100").End(xlUp))
iR = Cl.Rows.Count
Set ra = Me.Range("A8").Resize(iR, 9)
Me.Unprotect "123"
Me.Cells.Locked = False
If Me.Range("A1") <> 1 Then
For i = 1 To iR
If UCase(Cl(i)) = "R" Then
Cl.Rows(i).EntireRow.Locked = True '( => Em nghĩ vấn đề nó nằm chỗ này nhưng không biết cách xử lý)
End If
Next
Me.Protect "123", DrawingObjects:=True, AllowInsertingRows:=True, AllowDeletingRows:=True, AllowFiltering:=True
End If
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Xin cảm ơn ạ !