KUMI
Bụi phấn
- Tham gia
- 17/1/12
- Bài viết
- 564
- Được thích
- 571
Thử áp dụng bài này [URL="http://www.giaiphapexcel.com/forum/showthread.php?70145-Code-khóa-dòng-mở-dòng-theo-một-điều-kiện!"]Code khóa dòng & mở dòng theo một điều kiện![/URL]Gửi GPE!
Chúc GPE Công tác và Sức khỏe tốt!
Em có một Trường hợp tương tự như file đính kèm và câu hỏi em đã viết trong file.
Mong được GPE xem xét và giúp đỡ!
Em xin trân thành cám ơn!!!!
Gửi GPE!
Chúc GPE Công tác và Sức khỏe tốt!
Em có một Trường hợp tương tự như file đính kèm và câu hỏi em đã viết trong file.
Mong được GPE xem xét và giúp đỡ!
Em xin trân thành cám ơn!!!!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 And Target <> "" Then
r = Target.Row
ActiveSheet.Unprotect 12345
Range(Cells(r, 4), Cells(r, 14)).Locked = True
Union(Cells(r, 6), Cells(r, 11)).Locked=False
ActiveSheet.Protect 12345
End If
End Sub
Thử áp dụng bài này Code khóa dòng & mở dòng theo một điều kiện!
Thử code này rồi tuỳ biến sau nhé. Trước tiên phai chọn hết bảng tính, vào format cell và xoá dấu lock trong Protection nhé. Viết tạm vầy nhé, có gì tính tiếp
PHP:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 8 And Target <> "" Then r = Target.Row ActiveSheet.Unprotect 12345 Range(Cells(r, 4), Cells(r, 14)).Locked = True Union(Cells(r, 6), Cells(r, 11)).Locked=False ActiveSheet.Protect 12345 End If End Sub
Có phải bạn muốn như thé này không? Tôi viết từng dòng code cho bạn dễ xem chứ không có ý rút gọn codeGửi Thâỳ QuangHai1969!
Tks! Thâỳ...
Thầy Xem lại giu'p em ạ! Em đã gán code vào rồi nhưng thực hiện không đc ạ!
Hơn nữa em muốn gán code này vào cái nút "KhoaDong"
Nhưng với code trên của Thầy hình như chỉ gán vào tại sheet hiện tại thôi phải không ạ!
Như vậy thì cũng chưa đạt kết quả như em mong muốn.
các Thâỳ xem và sưả lại cho em vơí ạ! Tks!
Gửi Thâỳ QuangHai1969!
Tks! Thâỳ...
Thầy Xem lại giu'p em ạ! Em đã gán code vào rồi nhưng thực hiện không đc ạ!
Hơn nữa em muốn gán code này vào cái nút "KhoaDong"
Nhưng với code trên của Thầy hình như chỉ gán vào tại sheet hiện tại thôi phải không ạ!
Như vậy thì cũng chưa đạt kết quả như em mong muốn.
các Thâỳ xem và sưả lại cho em vơí ạ! Tks!
Private Sub CommandButton1_Click()
Dim dl, cell
Set dl = [d4:n9]
ActiveSheet.Unprotect '12345
dl.Locked = True
For Each cell In [H4:H19]
If cell <> "" Then
cell.Offset(, -4).Resize(, 11).Locked = True
Union(cell.Offset(, -2), cell.Offset(, 3)).Locked = False
End If
Next
ActiveSheet.Protect '12345
End Sub
Có phải thế này không? Chưa trúng thì tính tiếp.
PHP:Private Sub CommandButton1_Click() Dim dl, cell Set dl = [d4:n9] ActiveSheet.Unprotect ''12345 dl.Locked = True For Each cell In [H4:H19] If cell <> "" Then cell.Offset(, -4).Resize(, 11).Locked = True Union(cell.Offset(, -2), cell.Offset(, 3)).Locked = False End If Next ActiveSheet.Protect '12345 End Sub
Sao tự nhiên code màu đỏ hết vậy ta?
hơn là dùng [php] vì nó không những đổi màu lung tung, nó còn mất dấu nháy, tăng khoảng cách, nói chung khi copy từ [php] sẽ không ổn định.
Có phải thế này không? Chưa trúng thì tính tiếp.
PHP:Private Sub CommandButton1_Click() Dim dl, cell Set dl = [d4:n9] ActiveSheet.Unprotect ''12345 dl.Locked = False For Each cell In [H4:H19] If cell <> "" Then cell.Offset(, -4).Resize(, 11).Locked = True Union(cell.Offset(, -2), cell.Offset(, 3)).Locked = False End If Next ActiveSheet.Protect '12345 End Sub
Cảm ơn Thầy và Anh (Chị) nhiều ^^! 2 cách đều rất tuyệt!Có phải bạn muốn như thé này không? Tôi viết từng dòng code cho bạn dễ xem chứ không có ý rút gọn code
Sub KhoaDong()
With Sheet1
.Unprotect 12345
For I = 4 To 19
If .Range("H" & I).Value <> "" Then
.Range("D" & I & ":E" & I).Locked = True
.Range("G" & I & ":J" & I).Locked = True
.Range("L" & I & ":N" & I).Locked = True
Else
.Range("D" & I & ":E" & I).Locked = False
.Range("G" & I & ":J" & I).Locked = False
.Range("L" & I & ":N" & I).Locked = False
End If
Next I
.Protect 12345
End With
End Sub
Private Sub CommandButton1_Click()
Dim dl, cell
Set dl = [d4:n9]
ActiveSheet.Unprotect "12345
dl.Locked = False
For Each cell In [H4:H19]
If cell <> "" Then
cell.Offset(, -4).Resize(, 11).Locked = True
Union(cell.Offset(, -2), cell.Offset(, 3)).Locked = False
End If
Next
ActiveSheet.Protect 12345
End Sub
Từ ô hiện cell hiện hành, dịch sang trái 4 cột, từ ô đó chọn 11 cột phía phải cùng dòng đó. Khóa chúng lạicell.Offset(, -4).Resize(, 11).Locked = True
Sao cứ khóa hoài vậy ta? Code có sẵn hết rồi mà sao không thể edit được là sao ta?Các chuyên gia giúp em bài trên vơi'.
Thât sư Em đã rât' cô' găng' lam theo mà không đươc
Hic!
Sub khoa_hoai()
Dim cell
ActiveSheet.Unprotect
Cells.Locked = False
[B11:K24].Locked = True
For Each cell In [B26:K26]
If cell.Value = "" Or cell.Value <> 0 Then
cell.Offset(-15).Resize(14).Locked = False
End If
Next
ActiveSheet.Protect
End Sub
Sao cứ khóa hoài vậy ta? Code có sẵn hết rồi mà sao không thể edit được là sao ta?
PHP:Sub khoa_hoai() Dim cell ActiveSheet.Unprotect [B11:K26].Locked = False [B11:K24].Offset(-2).Locked = True For Each cell In [B26:K26] If cell.Value = "" Or cell.Value <> 0 Then cell.Offset(-15).Resize(14).Locked = False End If Next ActiveSheet.Protect End Sub
Mình nhầm rồi, xem lại code đã điều chỉnh ở bài 16 nhéAnh Hải ơi anh xem lại code xem chuẩn chưa?
Em test thử vùng màu da cam trong khung màu đỏ chỗ khóa chỗ không.
Còn sao dòng thứu 10 không tích format locks sao lại bị khóa luôn cùng vậy? đây là vùng ngaoif khung màu đỏ mà anh.
Sao cứ khóa hoài vậy ta? Code có sẵn hết rồi mà sao không thể edit được là sao ta?
PHP:Sub khoa_hoai() Dim cell ActiveSheet.Unprotect Cells.Locked = False [B11:K24].Locked = True For Each cell In [B26:K26] If cell.Value = "" Or cell.Value <> 0 Then cell.Offset(-15).Resize(14).Locked = False End If Next ActiveSheet.Protect End Sub