Không chạy macro khi bảo mật vùng dữ liệu.

Liên hệ QC

hoile

Thành viên chính thức
Tham gia
17/4/09
Bài viết
63
Được thích
51
Nghề nghiệp
kế toán
Mình có 1file, trong đó vùng dữ liệu từ B2:I40, có công thức để lấy dữ liệu từ sheet khác, đây là mẫu để mình in hóa đơn nên đã bảo vệ công thức và format các cell để kg bị mất dữ liệu và in không bị lệch.
Xin hỏi, khi mình bảo mật vùng đó thì khi chạy 1 macro thì bị báo lỗi, có cách nào khắc phục. Xin cám ơn.
Chúc cả nhà đón 1 năm mới TẤN TÀI TẤN LỘC - DỒI DÀO SỨC KHỎE
 
Hoile hỏi lẹ chắc muốn trả lời lẹ?
Thêm 1 dòng lệnh unprotect sheet đầu code và 1 dòng lệnh protect sheet cuối code!
 
Ặc ặc , tui lúa VBA mà PTM ơi, vui lòng quýnh 2 cái dòng đó dùm nhé. Xin cám ơn.Đây là macro nút lệnh của em. Thank trước.
Em protect dữ liệu sheet Invoice đó

PHP:
Sub PrintInv()

'Danh dau in
Dim wsD As Worksheet
Dim wsI As Worksheet
Set wsD = Worksheets("Data")
Set wsI = Worksheets("Invoice")

Dim rStart As Long
Dim rEnd As Long
Dim r As Long
rStart = wsD.Cells(Rows.Count, 1).End(xlUp).Row + 1
rEnd = wsD.Cells(Rows.Count, 2).End(xlUp).Row
r = rEnd - rStart + 1
For r = 1 To r
  wsI.Range("M1").Value = wsD.Range("B" & rStart + r - 1)
  wsI.PrintPreview
  wsD.Range("A" & rStart + r - 1).Value = "X"
Next r

End Sub
Với lại Hoile là tên em chứ em kg muốn hỏi lẹ đâu. Từ từ còn chưa hiểu mà lẹ như vậy chắc e ngáo luôn bác ơi, Chỉ chầm chậm thôi nhé. HIHI
 
Chỉnh sửa lần cuối bởi điều hành viên:
Ủa zậy hả? Hông biết VBA mà viết code ngon vậy sao?

Câu lệnh Unprotect sheet là:

PHP:
Sheets("Invoice").Unrotect "ptm"

Câu lệnh Protect sheet là:

PHP:
Sheets("Invoice").Protect "ptm"

Với "ptm" là password
 
Dạ em bó tay đó. để em post file lên a xem dùm em nhé.File này lúc trước của bác dosnet cho e,. em chỉnh sửa tí để ứng dụng cho mình đó. Bác xem dùm nhé. Em muốn các cell bên vùng in của e được bảo vệ đó, để kg ai lở tay chỉnh sữa công thức, độ dài, rộng của hàng,cột. nếu em bảo vệ thì nhấn nút in bị báo lỗi đó.
 
Lần chỉnh sửa cuối:
PHP:
Sub PrintInv()
'Danh dau in
'
Dim wsD As Worksheet
Dim wsI As Worksheet
    Set wsD = Worksheets("Data")
    Set wsI = Worksheets("Invoice")
    wsI.Unprotect
Dim rStart As Long
Dim rEnd As Long
Dim r As Long, i As Long
    rStart = wsD.Cells(Rows.Count, 1).End(xlUp).Row + 1
    rEnd = wsD.Cells(Rows.Count, 2).End(xlUp).Row
    r = rEnd - rStart + 1
    For i = 1 To r
         wsI.Range("M1").Value = wsD.Range("B" & rStart + i - 1)
         wsI.PrintPreview
         wsD.Range("A" & rStart + i - 1).Value = "X"
   Next i
   wsI.Protect
End Sub
 
Mình copy được 1 đọan code để ẩn hiện cột trên GPE.
Sau khi Protect sheet thì không chạy được code
Các bạn sửa đọan code sau giúp mình nhé !

PHP:
Sub LopChua_CheckBox3_Click()
Dim sss As Boolean
         
  sss = ActiveSheet.Columns("A").Hidden
  ActiveSheet.Columns("A").Hidden = Not sss
          
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Thêm lệnh gặp lỗi thì bỏ qua On Error Resume Next, vì trường hợp code trên chẳng may gặp lỗi thì nó không khoá sheet lại.
 
Thêm lệnh gặp lỗi thì bỏ qua On Error Resume Next, vì trường hợp code trên chẳng may gặp lỗi thì nó không khoá sheet lại.

Dạ cảm ơn Thầy, Thầy sửa giúp mình luôn vì mình không biết VBA, khi mình protect các cell có công thức thì code trên không chạy được
 
PHP:
Sub LopChua_CheckBox3_Click()
Dim sss As Boolean
  On Error Resume Next

  With AvtiveSheet  
  .UnProtect     
  sss = .Columns("A").Hidden
 .Columns("A").Hidden = Not sss
  .Protect
 End With         
End Sub
 
Dạ Thầy Ptm0412 chỉ dẫn giúp mình nha

Mình đã copy đọan code trên thay cho đọan code cũ.
Tại ô bất kỳ, bấm Ctrl + G, chọn Special, chọn Formula, Ok
Tools, Protection, Protect Sheet

Mình làm sai chỗ nào mà bấm nút ẩn hiện cột, code vẫn không chạy!
 
Theo nội dung code thì chỉ ẩn hiện cột A thôi. Bạn chắc dự định ẩn những cột chứa công thức phải không?
Với lại, bạn đã enable macro chưa?
Với lại, bạn protect sheet có pass không?
Với lại, bạn paste code vào chỗ nào? Có đúng sheet không?
Với lại, code trên dùng để nhấn vào 1 checkbox, mà bạn thì nhấn vào 1 nút, phải không?
 
Code này mình copy trên GPE, để nhấn vào 1 chekbox
Trước đây sau khi copy code xong, nó chạy tốt trên Sheet hiện hành.
Sau đó mình muốn bảo vệ 1 số ô cũng trên Sheet đó bằng các bước đã nêu, rồi Protect sheet, không password
Sửa code mới vẫn chưa chạy được.

Mình sửa code như sau:
- Bấm chuột phải vào checkbox
- Chọn Asign Macro
- Chọn Edit, quét tòan bộ code cũ, Paste code mới

Thầy xem giúp !
 
Vậy là lụm nhầm code rồi. Code này dùng để khi click vào checkbox, sẽ ẩn cột A, click cái nữa, hiện cột A. Nhưng muốn ẩn hoặc hiện thì phải gỡ Protect sheet ra, sau đó protect trở lại. Còn như bạn trình bày thì là click 1 cái khoá sheet, click cái nữa mở sheet. Nếu vậy thì nó là code này:

PHP:
Private Sub Chk1_Click()
With Sheet1
   If .Chk1 = True Then
      .Protect
   Else
     .Unprotect
   End If
End With
End Sub
 

File đính kèm

  • Protect sheet.xls
    23.5 KB · Đọc: 21
Vậy là lụm nhầm code rồi. Code này dùng để khi click vào checkbox, sẽ ẩn cột A, click cái nữa, hiện cột A. Nhưng muốn ẩn hoặc hiện thì phải gỡ Protect sheet ra, sau đó protect trở lại.

Dạ đúng là code dùng để ẩn hiện cột.
Mình muốn sao cho các ô có công thức vẫn được protect mà code ẩn hiện dòng vẫn xài được
 

File đính kèm

  • an va hien cot AB.xls
    22 KB · Đọc: 9
Lần chỉnh sửa cuối:
Bạn đã dùng code mới đâu? Chưa có 2 dòng lệnh Unprotect và Protect. Phải UnProtect đầu code, và Protect cuối code.

PHP:
Sub LopChua_CheckBox3_Click()
Dim sss As Boolean
    With ActiveSheet
        .Unprotect
                    sss = .Columns("A:B").Hidden
                    .Columns("A:B").Hidden = Not sss
        .Protect
    End With
End Sub
 

File đính kèm

  • Code an va hien cot AB.xls
    23.5 KB · Đọc: 14
Nhờ sự giúp đỡ của các anh, chị, em trên diễn đàn giúp 2 vấn đề sau:
1. Sửa, thêm…. Code sao cho khi đặt pass bảo vệ những cel có công thức thì Code vẫn chạy được.
2. Viết Code Soft chọn những việc chưa thực hiện( cột A theo “x”) và All toàn bộ bảng tính trên một Command buton
Trong File Excel tôi chi thu Code một cách đơn giản( Reconrd New Macro)
 

File đính kèm

  • theo dõi công việc.rar
    19.7 KB · Đọc: 3
Web KT
Back
Top Bottom