khóa công thức trong nhiều sheet.

Liên hệ QC

Yumi_000

Thành viên chính thức
Tham gia
30/7/08
Bài viết
63
Được thích
9
Các bác tạo giúp em code để khóa và ẩn các công thức trong nhiều sheet với.
Nhớ là chỉ cần làm 1lần là có thể khóa được nhiều sheet nha.
-bảng tính của em có nhiều sheet,mà trong sheet có nhiều Merge cell.
-Em chỉ cần khóa và ẩn tất cả những ô có công thức,không cho phép chỉnh sửa công thức thôi.
-dữ liệu thì vẫn cho phép nhập thêm vào bình thường.
mọi người giúp em nhé.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Các bác tạo giúp em code để khóa và ẩn các công thức trong nhiều sheet với.
Nhớ là chỉ cần làm 1lần là có thể khóa được nhiều sheet nha.
-bảng tính của em có nhiều sheet,mà trong sheet có nhiều Merge cell.
-Em chỉ cần khóa và ẩn tất cả những ô có công thức,không cho phép chỉnh sửa công thức thôi.
-dữ liệu thì vẫn cho phép nhập thêm vào bình thường.
mọi người giúp em nhé.
Cái này đã nói rất nhiều lần trên diển đàn rồi, sao bạn không chịu khó TÌM TRƯỚC KHI HỎI nhỉ
Từ khóa: Password cho nhiều sheet
Bao la luôn
 
Bạn nhấn Alt + F11 sẽ xuất hiện cửa sổ VBA. Bạn nhấp phải chuột vào tên Sheet rồi chọn Insert -> Module -> Tiếp theo là Paste code bên dưới vào. Bạn có thể chạy nó bằng lệnh Run (hình nút Play ở thanh công cụ bên trên) hoặc vào lại bảng tính nhấn Alt + F8 -> chọn Run.
PHP:
Sub khoa() On Error Resume Next For sh = 1 To Worksheets.Count With Sheets(sh)     Cells.Locked = False     Cells.SpecialCells(xlCellTypeFormulas, 23).FormulaHidden = True     Cells.SpecialCells(xlCellTypeFormulas, 23).Locked = True End With Sheets(sh).Protect "password" Next End Sub
Thân.
 
Lần chỉnh sửa cuối:
Dùng code này được không?
PHP:
Sub khoa()
For sh = 1 To Worksheets.Count
Sheets(sh).Select
Selection.Locked = True
Selection.FormulaHidden = True
Sheets(sh).Protect "password"
Next
End Sub
Thân.
Em đã chạy thử code của bác rồi,nhưng ko đúng ý em cần.
Code của bác chạy xong là khóa tất cả các sheet không cho nhập data luôn,nói chung là không thể click chuột vào sheet được.
Còn ý em cần là:
-Em chỉ cần khóa và ẩn tất cả những ô có công thức,không cho phép chỉnh sửa công thức thôi.
-dữ liệu thì vẫn cho phép nhập thêm vào bình thường.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Em đã chạy thử code của bác rồi,nhưng ko đúng ý em cần.
Code của bác chạy xong là khóa tất cả các sheet không cho nhập data luôn,nói chung là không thể click chuột vào sheet được.
Còn ý em cần là:
-Em chỉ cần khóa và ẩn tất cả những ô có công thức,không cho phép chỉnh sửa công thức thôi.
-dữ liệu thì vẫn cho phép nhập thêm vào bình thường.
Thử cái này xem:
PHP:
Option Explicit
Sub ProtectAllSheets()
  Dim Sh As Worksheet
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Cells.Locked = False
    With Sh.Cells.SpecialCells(3, 23)
      .Locked = True
      .FormulaHidden = True
    End With
    Sh.Protect "123"
  Next
End Sub
Pass = 123 nhé
Nếu chạy code từ lần 2 trở đi thì phải có thêm công đoạn Unprotect ,như thế này đây:
PHP:
Option Explicit
Sub ProtectAllSheets()
  Dim Sh As Worksheet
  On Error Resume Next
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Unprotect "123"
    Sh.Cells.Locked = False
    With Sh.Cells.SpecialCells(3, 23)
      .Locked = True
      .FormulaHidden = True
    End With
    Sh.Protect "123"
  Next
End Sub
 
Lần chỉnh sửa cuối:
Lấy 1 trong 2 cái thôi chứ ----> Nó cùng tên mà, sao chạy được!
Theo tôi thì lấy cái dưới tổng quát hơn! Code ở trên là "tập tành từng bước"
Rồi,em chạy thử đoạn code thứ 2.nhưng kết quả vẫn vậy: khóa tất tần tật,không click chuột vào sheet được luôn.
làm sao đây,hình như mọi người chưa hiểu ý em cần tạo như thế nào phải không?
Em chỉ cần khóa và ẩn tất cả những ô có công thức,không cho phép chỉnh sửa công thức thôi.
-dữ liệu thì vẫn cho phép nhập thêm vào bình thường.

Em cần như vậy đó bác ạ.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Rồi,em chạy thử đoạn code thứ 2.nhưng kết quả vẫn vậy: khóa tất tần tật,không click chuột vào sheet được luôn.
làm sao đây,hình như mọi người chưa hiểu ý em cần tạo như thế nào phải không?
Em chỉ cần khóa và ẩn tất cả những ô có công thức,không cho phép chỉnh sửa công thức thôi.
-dữ liệu thì vẫn cho phép nhập thêm vào bình thường.

Em cần như vậy đó bác ạ.
Bạn xem file này nhé!
Trong file, các cell A1, D10 và F4 ở tất các sheet đều là công thức! Khi khóa sheet thì các cell này không Edit được, trong khi các cell khác vẩn hoạt động bình thường
Tôi e bạn đã làm sai ở công đoạn nào đó
Nếu có trục trặc gì, bạn đưa nguyên file bị lổi ấy lên đây nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn xem file này nhé!
Trong file, các cell A1, D10 và F4 ở tất các sheet đều là công thức! Khi khóa sheet thì các cell này không Edit được, trong khi các cell khác vẩn hoạt động bình thường
Tôi e bạn đã làm sai ở công đoạn nào đó
Nếu có trục trặc gì, bạn đưa nguyên file bị lổi ấy lên đây nhé
Em xem file của bác thì được rồi nhưng file em lại ko chạy được.em cắt gửi vài sheet trong file lên bác xem thử code lại giúp em nhé.
cảm ơn nhiều.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Em xem file của bác thì được rồi nhưng file em lại ko chạy được.em cắt gửi vài sheet trong file lên bác xem thử code lại giúp em nhé.
cảm ơn nhiều.
Không chạy được là vì code tôi tạo ra, tôi giã lập Pass =123 ---> Còn file bạn, pass là cái gì thì bạn phải sửa lại cho phù hợp chứ
 
Không chạy được là vì code tôi tạo ra, tôi giã lập Pass =123 ---> Còn file bạn, pass là cái gì thì bạn phải sửa lại cho phù hợp chứ
Thì em copy nguyên đoạn cde của bác và đó.em có đặt pass gì khác đâu.
em đã nói em mù cái VBA này mà.bác giúp em cụ thể với nhé.
Thanks bác nhiều.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Đầu tiên bạn cần phải mờ pass cũ của bạn ra. Rồi copy code đó vào trong VBA (Bạn nhấn Alt + F11 -> nhấp phải chuột vào tên sheet -> chọn Insert -> Module -> Rồi Paste vào trang kế bên). Quay lại bảng tính nhấn Alt + F8 -> chạy Macro vừa mới tạo ra đó -> Vậy là xong. Thân.
 
Lần chỉnh sửa cuối:
Thì em copy nguyên đoạn cde của bác và đó.em có đặt pass gì khác đâu.
em đã nói em mù cái VBA này mà.bác giúp em cụ thể với nhé.
Thanks bác nhiều.
Nhưng file của bạn đã đặt Pass Protect sheet trước đó, và pass là cái gì đương nhiên bạn phải biết chứ ---> Lấy pass này thay vào code là chạy ngay! (thay vào chổ nào có số 123 ấy)
 
Đầu tiên bạn cần phải mờ pass cũ của bạn ra. Rồi copy code đó vào trong VBA (Bạn nhấn Alt F11 -> nhấp phải chuột vào tên sheet -> chọn Insert -> Module -> Rồi Paste vào trang kế bên).
Quay lại bảng tính nhấn Alt F8 -> chạy Macro vừa mới tạo ra đó -> Vậy là xong.
Thân.
Xong rồi,em làm được rồi .cảm ơn mọi người nhiều.
Chúc Giáng sinh an lành và hạnh phúc!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Nhưng file của bạn đã đặt Pass Protect sheet trước đó, và pass là cái gì đương nhiên bạn phải biết chứ ---> Lấy pass này thay vào code là chạy ngay! (thay vào chổ nào có số 123 ấy)
Làm phiền bác xíu nữa,bác sửa lại dùm em là: khi nhập liệu vào thì kết quả ở ô công thức vẫn có thể thay đổi.nhưng ko chỉnh sửa được công thức đó.
Nói chung cái code bác gửi vậy là tốt rồi,nhưng thay vì vẫn cho nhập liệu vào mà kết quả ở ô công thức vẫn không thay đổi thì nay đổi lại như em nói ở trên.vì em muốn chuyển file này cho người khác nhập giúp em.
bác giúp em lần nữa nhé.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Làm phiền bác xíu nữa,bác sửa lại dùm em là: khi nhập liệu vào thì kết quả ở ô công thức vẫn có thể thay đổi.nhưng ko chỉnh sửa được công thức đó.
Nói chung cái code bác gửi vậy là tốt rồi,nhưng thay vì vẫn cho nhập liệu vào mà kết quả ở ô công thức vẫn không thay đổi thì nay đổi lại như em nói ở trên.vì em muốn chuyển file này cho người khác nhập giúp em.
bác giúp em lần nữa nhé.
Khi sheet đã được bảo vệ thì các cell có công thức sẽ không được phép chỉnh sửa.. tuy nhiên kết quả của nó vẩn có thay đổi chứ ---> Tùy thuộc vào các tham chiếu
 
Các bác xem thủ cái này nhé:
http://ductrong.vn/forum/blogs/redplanetvn/15-khoa-va-bao-ve-nhung-o-co-chua-cong-thuc.html
 
Thử cái này xem:
PHP:
Option Explicit
Sub ProtectAllSheets()
  Dim Sh As Worksheet
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Cells.Locked = False
    With Sh.Cells.SpecialCells(3, 23)
      .Locked = True
      .FormulaHidden = True
    End With
    Sh.Protect "123"
  Next
End Sub
Pass = 123 nhé
Nếu chạy code từ lần 2 trở đi thì phải có thêm công đoạn Unprotect ,như thế này đây:
PHP:
Option Explicit
Sub ProtectAllSheets()
  Dim Sh As Worksheet
  On Error Resume Next
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Unprotect "123"
    Sh.Cells.Locked = False
    With Sh.Cells.SpecialCells(3, 23)
      .Locked = True
      .FormulaHidden = True
    End With
    Sh.Protect "123"
  Next
End Sub
Nếu như em muốn khoá 1 vài sheet không khoá hết tất cả các sheet thì code sẽ sửa lại như thế nào ạ?
Em có thử thêm như vậy mà code bị lỗi ạ.
ShProtect = Array("Sheet1", "Sheet3", "Sheet5")
On Error Resume Next
For Each Sh In Protect.Worksheets
Mong anh phản hồi. Cám ơn anh!
Bài đã được tự động gộp:

Thử cái này xem:
PHP:
Option Explicit
Sub ProtectAllSheets()
  Dim Sh As Worksheet
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Cells.Locked = False
    With Sh.Cells.SpecialCells(3, 23)
      .Locked = True
      .FormulaHidden = True
    End With
    Sh.Protect "123"
  Next
End Sub
Pass = 123 nhé
Nếu chạy code từ lần 2 trở đi thì phải có thêm công đoạn Unprotect ,như thế này đây:
PHP:
Option Explicit
Sub ProtectAllSheets()
  Dim Sh As Worksheet
  On Error Resume Next
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Unprotect "123"
    Sh.Cells.Locked = False
    With Sh.Cells.SpecialCells(3, 23)
      .Locked = True
      .FormulaHidden = True
    End With
    Sh.Protect "123"
  Next
End Sub
Nếu như em muốn khoá vài sheet không khoá tất cả thì như thế nào ạ?
Em có thử thêm:
Protect = Array("Sheet1", "Sheet3", "Sheet5")
On Error Resume Next
For Each Sh In Protect.Worksheets
nhưng bị lỗi, mong bác phản hồi. Cám ơn bác!
 
Thử cái này xem:
PHP:
Option Explicit
Sub ProtectAllSheets()
  Dim Sh As Worksheet
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Cells.Locked = False
    With Sh.Cells.SpecialCells(3, 23)
      .Locked = True
      .FormulaHidden = True
    End With
    Sh.Protect "123"
  Next
End Sub
Pass = 123 nhé
Nếu chạy code từ lần 2 trở đi thì phải có thêm công đoạn Unprotect ,như thế này đây:
PHP:
Option Explicit
Sub ProtectAllSheets()
  Dim Sh As Worksheet
  On Error Resume Next
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Unprotect "123"
    Sh.Cells.Locked = False
    With Sh.Cells.SpecialCells(3, 23)
      .Locked = True
      .FormulaHidden = True
    End With
    Sh.Protect "123"
  Next
End Sub
Nếu như em muốn khoá vài sheet không khoá tất cả thì như thế nào ạ?
Em có thử thêm:
Protect = Array("Sheet1", "Sheet3", "Sheet5")
On Error Resume Next
For Each Sh In Protect.Worksheets
nhưng bị lỗi, mong bác phản hồi. Cám ơn bác!
 
Web KT

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

Back
Top Bottom