bảo vệ công thức trong Excel

Liên hệ QC

kedatinh233

Thành viên mới
Tham gia
1/6/07
Bài viết
2
Được thích
2
Nếu bạn không muốn người khác sữa công thức ,nhưng có thể sữa được những ô không có công thức thi hãy làm như sau
tại cửa sỗ excel hãy ấn Alt+F11 để vào Visual basic Editor
cữa sổ vb hiện ra, khung bên trái là Project Explore (nếu không có thì vào menu View - Project Explorer). Nhấp kép chuột vào This WorkBook, gõ vào khung soạn thảo bên
phải đoạn mã:
Mã:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng As Range
For Each rng In Target.Cells
If rng.HasFormula Then
ActiveSheet.Protect
Exit Sub
Else
ActiveSheet.Unprotect
End If
Next rng
End Sub



 
Lần chỉnh sửa cuối:
Bạn kedatinh233 này!.
Nếu mình muốn chỉnh lại không thức thì sao?.
Mặc khác có cách nào chỉnh code lại khi sữa công thức thì bắc gõ pass, nếu đúng thì cho sữa, còn không thì không cho sữa.

Thân chào
 
Nếu chỉ có mỗi yêu cầu cấm người khác sửa công thức thì cần làm vậy chi cho rối... Protect sheet cũng đáp ứng dc yêu cầu rồi
 
He he he ...
Cái đó biết rùi anhtuan1066 ơi. Nhưng ở đây là dùng VBA mà.
 
Thì tùy bạn... nhưng thấy vô bổ... vì ko cần thiết phải làm 1 chuyện mà ai cũng có thể làm bằng cách khác đơn giản hơn...
Nói ko chừng có 1 ngày nào đó Bác Nguyễn Tử Quãng viếng thăm và ĂN hết mấy con macro của bạn thì bạn sẽ làm sao?
Ha... ha...
ANH TUẤN
 
Mặc dù mình chẳng biết gì về VBA nhưng mình cũng thấy không cần thiết. Cách này để những người mới học VBA làm cho quen thôi,
 
Theo tôi thì đoạn mã trên cũng không phải là vô ích. Vì ta có thể lồng nó vào một đoạn mã khác nhằm phục vụ cho việc bảo vệ dữ liệu khỏi bị người khác sửa chữa hoặc xoá thủ công thôi. Chứ cứ mỗi lần muốn nhập liệu hoặc đóng sheet lại phải vào Tool-->Protetion... để mở khoá hoặc khoá sheet thì cung hơi ngại đấy.
 
Vấn đề này đã được anh nvson đề cập rồi.
 
Nói chung thì dc cái này mất cái kia thôi... Ai thấy cái gì tiện lợi thì xài... Tôi thì thấy Unprotect chẳng có gì bất tiện cả:
Protect và Unprotect Sheet: Alt + T + P + P
Protect và Unprotect Workbook: Alt + T + P + W
Còn các bạn muốn thuận tiện hơn thì dùng VBA, nhưng chắc gì đã tiện hơn đâu... Vì mất công bảo vệ VBA khỏi mấy thằng diệt virus...
ANH TUẤN
 
sao tui làm như ban anhtuan66 không được zay cà
 
Bạn làm thế nào mà ko dc?
 
Nếu muốn bảo vệ bằng VBA thì cũng có cách... Bạn tham khảo code sau đây:

Sub ProtectAllSheets()
Dim ws As Worksheet
Dim sOrigSheet As String
Dim sOrigCell As String
Dim J As Integer
Application.ScreenUpdating = False
sOrigSheet = ActiveSheet.Name
sOrigCell = ActiveCell.Address
For Each ws In Worksheets
ws.Select
ws.Protect Password:="anhtuan1066"
Next ws
Application.GoTo Reference:=Worksheets("" & sOrigSheet & "").Range("" & sOrigCell & "")
Application.ScreenUpdating = True
End Sub
Sub UnProtectAllSheets()
Dim ws As Worksheet
Dim sOrigSheet As String
Dim sOrigCell As String
Dim J As Integer
Application.ScreenUpdating = False
sOrigSheet = ActiveSheet.Name
sOrigCell = ActiveCell.Address
For Each ws In Worksheets
ws.Select
ws.Unprotect Password:="anhtuan1066"
Next ws
Application.GoTo Reference:=Worksheets("" & sOrigSheet & "").Range("" & sOrigCell & "")
Application.ScreenUpdating = True
End Sub

Cell nào bạn muốn cho người khác nhập liệu thì truớc đó format cell, bỏ thuộc tính lock của nó... Code này Protect 1 lần hết tất cả các sheet với 1 pass duy nhât... Pass mặc định là anhtuan1066 Bạn có thể sửa lại thành cái gì tùy bạn...
Mến
ANH TUẤN
 
Web KT

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

Back
Top Bottom