Hỏi về - Khóa dòng theo điều kiện với vba? (1 người xem)

  • Thread starter Thread starter KUMI
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

KUMI

Bụi phấn
Tham gia
17/1/12
Bài viết
564
Được thích
571
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!!!!
 

File đính kèm

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!!!!
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]
 
Upvote 0
Em cám ơn Anh(Chị)!
Nhưng AC ơi!,,,hix!Em chưa hiểu gì về vba cả... đọc để hiểu là điều quá khó...huống chi là vận dụng nó!
Em cũng muốn tìm hiểu vba lắm vì thấy rất tuyệt vời nhưng công việc và gia đình...đúng là thật khó nói...
1 lần nữa rất cám ơn AC!Em sẽ xem!
 
Lần chỉnh sửa cuối:
Upvote 0
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!!!!

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
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
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

­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!
 

File đính kèm

Upvote 0
­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!
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
 

File đính kèm

Upvote 0
­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!

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?
 
Upvote 0
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?

Thêm 1 dấu nháy nữa tại đây: ActiveSheet.Unprotect ''12345

Mình thích dùng
Mã:
 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.
 
Upvote 0
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

Sửa lại 1 chút nhé cái chỗ dl.Locked=False
 
Upvote 0
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
Cảm ơn Thầy và Anh (Chị) nhiều ^^! 2 cách đều rất tuyệt!
Code rất này dễ hiểu và Em đã áp dụng đc!
PHP:
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

Nhưng còn code này:
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
em thấy thực hiện đc nhưng chưa hiểu các con số :-4,11,-2,3 phải chăng là giá trị dòng và cột?
Mong được giả thích kĩ hơn về code này ạ!
Xin trân thành cám ơn!
 
Upvote 0
Muốn hiểu bạn tìm hiểu thêm về Offset, resize trong vba nhé. Còn code giải thích qua như thế này:
cell.Offset(, -4).Resize(, 11).Locked = True
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ại
 
Upvote 0
Khóa Cột theo điều kiện

Dear GPE! Chúc ngày mới Mọi người Vui Khỏe!
Giờ Em muốn chuyển thành Khóa cột theo điều kiện
Phiền Các Thầy xem file đính kèm và làm giúp Em nhé!
Câu hỏi Em đã đặt hết vào trong file đính kèm rồi ạ.
Tks ạ!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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!
 
Upvote 0
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!
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
 
Lần chỉnh sửa cuối:
Upvote 0
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

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.
 
Upvote 0
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.
Mình nhầm rồi, xem lại code đã điều chỉnh ở bài 16 nhé
 
Upvote 0
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

Hihi. Công việc vướng ở đâu thì Em hỏi ở đó Thầy ạ.
Chứ Em cũng không có nhiều thời gian để nghiên cứu tìm hiểu để hỏi cái này cái nọ.
Em Cám ơn Thầy nhiều.
 
Upvote 0
Web KT

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

Back
Top Bottom