Khóa và không cho hiện công thức

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

Namvba

Thành viên mới
Tham gia
10/5/07
Bài viết
22
Được thích
3
Mình tạo bảng tính thẩm định dự án có nhiều Sheet
Mình viết đoạn VB để khóa và không cho hiện công thức tại các ô chứa công thức như sau :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng As Range
For Each rng In Target.Cells
ActiveSheet.Unprotect ("1968")
If rng.HasFormula Then
rng.FormulaHidden = True
ActiveSheet.Protect ("1968")
Exit Sub
Else
ActiveSheet.Unprotect ("1968")
End If
Next rng
End Sub

Nhưng cách này chỉ có tác dụng khi mình vào Tools\Macro\Securty tiếp chọn mục Low(Not recomended).... thì mới có tác dụng. Nếu người sử dụng chọn mục High.Only ..... thì đoạn code trên không còn tác dụng nữa

Các bạn có cách nào để người sử dụng không chọn được mục High.Only ...., hoặc cách khác để khóa và không cho hiện công thức chỉ mình với
 
Bạn chọn các ô chứa công thức cần ẩn đi, Format Cell/Protection/Hidden.
Sau đó Protect Sheet lại bình thường.
 
Trước hết cảm ơn các bạn đã tham gia hướng dẫn cho mình, nhưng mình thử một số cách của các bạn thì đều khóa cả Sheet, ý mình chỉ khóa những ô có công thức còn các ô khác vẫn nhập dữ liệu bình thường. Mình xin trích lại ý mình như sau

Mình tạo bảng tính thẩm định dự án có nhiều Sheet
Mình viết đoạn VB để khóa và không cho hiện công thức tại các ô chứa công thức như sau ( cho cả Workbook):

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng As Range
For Each rng In Target.Cells
ActiveSheet.Unprotect ("1968")
If rng.HasFormula Then
rng.FormulaHidden = True
ActiveSheet.Protect ("1968")
Exit Sub
Else
ActiveSheet.Unprotect ("1968")
End If
Next rng
End Sub

Nhưng cách này chỉ có tác dụng khi mình vào Tools\Macro\Securty tiếp chọn mục Low(Not recomended).... thì mới có tác dụng, các ô có công thức đều bị khóa và không hiện công thức. Nếu người sử dụng chọn mục High.Only ..... thì đoạn code trên không còn tác dụng nữa

Các bạn có cách nào để người sử dụng không chọn được mục High.Only ...., hoặc có chọn cũng không sửa được công thức.
 
Đã dùng VBA thì phải chấp nhận Security ở mức độ Low hoặc Medium. Bạn có thể xem thêm nội dung sau:

You may encounter this error for the following reasons:
Macro security is set to High and you selected Disable when prompted by the macro warning dialog when opening the file, or the macro was unsigned and was automatically disabled by the application
If the macro was signed and you chose the Disable button when prompted to accept the certificate for the macro when the file was opened, you can use the following procedure to enable the macro:
Close the file and any other instances of the application currently running on the computer (this may include closing any applications using portions of the application you are currently running, such as Outlook which can use Word, database applications, and others).
Open the file again and examine the certificate of trust details and set the Always trust macros from this publisher box if you trust the certificate issued by the publisher.
Click the Enable button to allow the macro to run.
If the macro was not signed (no attached certificate of trust) and you have verified the source of the unsigned macro and believe you can trust it, you can enable the macro with the following procedure:
Select the Tools menu option and then select Macro and Security. In the resulting Security dialog, set the security level to Medium by clicking the Medium radio button.
Close the file and any other instances of the application currently running on the computer.
Open the file again and click the Enable button when prompted to allow for the unsigned macro to run.
When you have accepted the macro, return the macro security level to High.
Another instance of your application has a lock on the security settings and is disallowing any changes to security settings
It is recommended to close all Office related applications or other instances of the same application when you attempt to make changes to your security settings.
Visual Basic for Applications (VBA) is not installed on your computer
If VBA is not installed, it is not possible to accept certificates of trust attached to VBA macros. Therefore, any VBA macro attempting to run, even with an attached certificate of trust, cannot be run because the necessary macro interpreter is not installed on the system. Two scenarios can cause this error:
Your administrator chose not to install VBA
The version of Office you are running does not install VBA by default
If you are running an instance of Office that does not provide VBA as an installable feature, you will need to upgrade your version of Office to run VBA macros.
The certificate of trust is invalid - (when this occurs, you cannot select the Enable button)
The certificate is no longer trusted, was revoked by the issuing authority, or is damaged. There are several other possibilities which you may need to explore as to why the certificate is no longer recognized as valid by your system. It is recommended that you never trust or run a macro that has an invalid certificate.
A troubleshooter help topic is available online regarding this issue.
 
Web KT

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

Back
Top Bottom