Dấu công thức không hiển thị lên thanh formula

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
Các bạn có cách nào dấu công thức hiển thị lên thanh formula bằng VBA, chỉ mình với
 
Sao tôi test code của bạn Namvba nó chẳng hoạt động vậy? Bạn minhlev cho biết ý kiến đi!
ANH TUẤN
 
Upvote 0
Bác xem và có thể làm theo bài số 21. Còn giải quyết theo hướng của bác thì chỉ cần chỉnh lại 1 chút như code sau:
Mã:
Sub WorkSheet_Change(ByVal Target As Range)
Dim rng As Range
ActiveSheet.Unprotect ("1968")
On Error Resume Next
Cells.Locked = False
For Each rng In Target.Cells
    If rng.HasFormula Then
        rng.Locked = True
        rng.FormulaHidden = True
    End If
Next rng
ActiveSheet.Protect ("1968")
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu như vô tình nhập vào 1 cell có công thức thì tất nhiên là ko dc rồi... vậy phải tự mình vào menu Tools đễ Unprotect.. cũng mất công quá... Giá như có thể làm 1 Input Message đễ mỗi khi sửa vào cell có công thức thì nó hiện ra, gõ đúng thì cho sửa... gõ sai hoặc Cancel--> ko làm gì cả
Bạn minhlev cải tiến tiếp xem!
ANH TUẤN
 
Upvote 0
Bac MinhLev ơi kiểm tra theo cách của bạn không chạy được, nhờ bác xem lại thử.
Ý mình muốn khi viết đoạn code của mình thì tất cả các sheet ô nào có công thức tự động khóa, nếu nhập đúng Password thì mới chỉnh sửa được, khi rời khỏi ô sẽ tự động khóa, còn các ô khác không có công thức vẫn nhập bình thường.

Giờ mình muốn thêm các ô có công thức bị khóa đồng thời không hiện công thức lên thanh Formula, khi nào nhập đúng Password thì mới hiện công thức và cho chỉnh sửa.
 
Upvote 0
Cái code của minhlev chạy dc đấy chứ.. có điều là chưa có khung nhập pass thôi.. Nó vẫn đạt dc yêu cầu là những cell chứa công thức thì bị khóa, còn lại các cell khác thì dc phép nhập bình thường...
 
Upvote 0
Thưa bác NamVBA, Code của tôi chạy trong worksheet, còn code của bác chạy trong this workbook. Tôi thấy code của bác cũng rất hay nhưng nên thêm dòng code dưới đây vào trước dòng Activesheet.Protect ("1968")
Mã:
 rng.FomulaHidden = True

Bác xem có được không nhé.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn MinhLev ơi khi chạy nó báo lỗi ngay câu lệnh bạn bảo thêm vào
rng.FomulaHidden = True
 
Upvote 0
Namvba đã viết:
Bạn MinhLev ơi khi chạy nó báo lỗi ngay câu lệnh bạn bảo thêm vào
rng.FomulaHidden = True
Chuyện này nói đã lâu rồi mà vẫn chưa dc giãi quyết ổn thỏa... Hay là như vầy đi, bạn đưa cái file đang bị báo lỗi ấy lên đây, mọi người sẽ giúp cho!
ANH TUẤN
 
Upvote 0
Như vậy là trong file của bác đã bị protect rồi. Do vậy trước tiên bác hãy unprotect file đã (có thể thêm dòng code Activesheet.Unprotect("1968") vào ngay sau dòng khai báo Dim... hoặc Unprotect Sheet trong Tool cũng được).
 
Upvote 0
Mình gửi ví dụ 2 File các bạn xem giúp.
Book1.xls làm theo cách của mình tất cả các sheet nếu ô không có công thức thì nhập bình thường và chỉ khóa bị khóa nếu bạn đặt công thức, giờ mình muốn thêm một tý nữa là dấu luôn công thức không hiện lên thanh Formula.
Theo chỉ dẫn bạn Minhlev thêm dòng lệnh " rng.FomulaHidden = True" nhưng khi chạy thì báo lỗi tại dòng này (file Book2.xls)

Nhờ các bạn giải hộ
 

File đính kèm

  • Book1.xls
    21 KB · Đọc: 68
  • Book2.xls
    21 KB · Đọc: 58
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Nguyên nhân là tại book2, sheet đã được protect rồi còn ô chứa công thức lại không được dấu công thức. Do vậy thêm dòng lệnh rng.FomulaHidden=True sẽ dẫn đến bị lỗi vì nó không thể xâm nhập vào những ô đã bị khoá để thực thi công việc của mình. Do vậy như tôi đã nói tại bài số 34, bác nên thêm dòng lệnh mở khoá cho sheet trước vòng lặp hoặc vào từng sheet và trên thanh menu chọn Tool/Unprotect Sheet để mở khoá sau đó kích đúp vào ô bất kỳ trong sheet --> Enter là OK (chỉ cần mở khoá 1 lần cho từng sheet có trong workbook).
 
Upvote 0
EM hỏi

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
[LEFT] [COLOR=red]On Error Resume Next[/COLOR]
ActiveSheet.Unprotect
[COLOR=red]Cells.Locked = False
[/COLOR]Selection.SpecialCells(xlCellTypeFormulas, 23).Select
Selection.FormulaHidden = TrueSelection.Locked = True
ActiveSheet.ProtectRange("A1").Select
End Sub
[/LEFT]

Code trên chạy rất tốt khi ta dùng cho 1 Sheet chưa có công thức. Nếu Sheet đã có công thức rồi mới dùng Code trên thì không có tác dụng khóa và dấu hàm. Bác nào chỉ dùm cách khóa và dấu hàm = VBA khi Sheet đã có công thức.
 
Upvote 0
Web KT
Back
Top Bottom