Dấu công thức không hiển thị lên thanh formula (1 người xem)

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

Người dùng đang xem chủ đề này

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
 
Tức là vẫn có thanh Formula nhưng lại không hiển thị lên thanh đó phải không bạn ???

Thân!
 
Upvote 0
Đúng rồi bạn ạ, bạn có cách nào chỉ mình với.
 
Upvote 0
Ủa, sao kỳ vậy... Hình như khi protect sheet thì những cell có thuộc tính hidden sẽ bị ẩn công thức trên thanh Formula mà ta
Tôi ko biết về VBA nhưng tôi nghĩ việc đầu tiên sẽ là unlock toàn bộ cell, sau đó quét xem cell nào chứa công thức thì hidden nó lại.. Tiếp theo là protect sheet... Đến lúc này thì chắc ăn 100% sẽ ko nhìn thấy công thức trên thanh Formula
Ko biết có đúng ý bạn Namvba ko ta?
ANH TUẤN
 
Upvote 0
À, hiểu rồi, có nghĩa là muốn bảo vệ bảng tính không cho hiện công thức lên.
Em cứ tưởng là File bình thường (không dùng protect) mà làm như vậy thì . . . chưa biết vì chưa thấy.

Cảm ơn bác!
 
Upvote 0
Món này nếu tự record macro thì sẽ bị vướng ở 1 chồ: "LÀM SAO BIẾT CELL NÀO CHỨA CÔNG THỨC?"
vậy Bắp cho hỏi trong VBA, mình sẽ làm như thế nào?
ANH TUẤN
 
Upvote 0
anhtuan1066 đã viết:
Món này nếu tự record macro thì sẽ bị vướng ở 1 chồ: "LÀM SAO BIẾT CELL NÀO CHỨA CÔNG THỨC?"
vậy Bắp cho hỏi trong VBA, mình sẽ làm như thế nào?
ANH TUẤN

Đó là nhờ thuộc tính .HasFormula

VD : Xét mảng đó có công thức hay không ??

PHP:
Worksheets("Sheet1").Activate
Set rr = Application.InputBox(prompt:="Select a range on this worksheet", Type:=8)
If rr.HasFormula = True Then
    MsgBox "Every cell in the selection contains a formula"
End If

Thân!
 
Upvote 0
Cho hỏi thêm:
1> Nếu ko cần hộp Input, cứ để cho Excel tự quét thì có phải là dùng:
Cells.HasFormula ???
2> Có phải là nên đặt nó vào trong sự kiện Worksheet_change ??? Vì theo tôi nghĩ, cứ khi ta gõ công thức vào cell nào đó thì lập tức nó dc gán thuộc tính Hidden... Có đúng thế ko nhỉ?
Mong giúp! (Ngu VBA)
ANH TUẤN
 
Upvote 0
anhtuan1066 đã viết:
Cho hỏi thêm:
1> Nếu ko cần hộp Input, cứ để cho Excel tự quét thì có phải là dùng:
Cells.HasFormula ???
2> Có phải là nên đặt nó vào trong sự kiện Worksheet_change ??? Vì theo tôi nghĩ, cứ khi ta gõ công thức vào cell nào đó thì lập tức nó dc gán thuộc tính Hidden... Có đúng thế ko nhỉ?
Mong giúp! (Ngu VBA)
ANH TUẤN

1. Vâng, đúng thế đấy.
2. Đó cũng là một ý tưởng tốt. Khi họ muốn sửa thì họ phải unprotect, như vậy phải lường đến cả TH này.

Thân!
 
Upvote 0
anhtuan1066 đã viết:
Món này nếu tự record macro thì sẽ bị vướng ở 1 chồ: "LÀM SAO BIẾT CELL NÀO CHỨA CÔNG THỨC?"
vậy cho hỏi trong VBA, mình sẽ làm như thế nào?

Tuấn ghi macro với lệnh Goto trong menu edit ; nó sẽ như thế này:
Mã:
[b]
Sub MacroGoTo()[/b]
    Cells.Select
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select[b]
End Sub[/b]
-+*/
/-(ay Tuấn cò thể tìm kiếm với từ khóa SpecialCells trên diễn đàn (nói nhỏ, có 1 bài của mình í nha!!)@#!^%
 
Lần chỉnh sửa cuối:
Upvote 0
SA_DQ đã viết:
Tuấn ghi macro với lệnh Goto trong menu edit ; nó sẽ như thế này:
Mã:
[B]
Sub MacroGoTo()[/B]
    Cells.Select
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select[B]
End Sub[/B]
-+*/

Tuyệt vời.:<>:<>

Có những điều ngay trong nhà ta, thế mà cứ dòm ngó sang nhà hàng xóm để . . . tìm kiếm+-+-+-++-+-+-++-+-+-+. Chắc do . . . bản năng-0-0-0-

Chiêu Goto Special làm nhiều, thế mà lại quên mất. Cảm ơn bác nhiều nhé.

Thân!
 
Upvote 0
Đúng thế... giống như lần trước ko biết làm thế nào đễ SUM và bỏ qua những cell ẫn... Ấy thế mà Go to cái thấy ngay... Cám ơn lảo tiền bối... hi.. hi.. Nếu gọi là HỌC thì chổ này chính là HỌC đây!... Vấn đề chỉ thật sự đơn giản khi ta.. biết rồi...
ANH TUẤN
 
Upvote 0
Ha... ha.... làm dc rồi...
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
Cells.Select
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
Selection.FormulaHidden = True
Selection.Locked = True
ActiveSheet.Protect
Range("A1").Select
End Sub
Quá đãaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ANH TUẤN
 
Upvote 0
Không cho hiện công thức trên thanh Formula bar

Mình viết đoạn mã sau thì ô nào trên bảng tính có công thức sẽ tự động khóa không cho nhập dữ liệu nếu như không có Password. Khi nhập đúng password thì sẽ cho chỉnh sữa nhưng khi con trỏ rời khỏi ô thì ô sẽ tự động khóa.
Còn cách để không hiện công thức trên thang Formula bar mình làm mãi không được, bạn nào biết chỉ cụ thể mình với.

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 ("1968")
Exit Sub
Else
ActiveSheet.Unprotect ("1968")
End If
Next rng
End Sub
 
Upvote 0
Mình hỏi cách dấu công thức trên thanh Formula Bar, chứ không cho chỉnh sửa thì được rồi.

Các bạn có cách nào bằng VBA chỉ mình với
 
Upvote 0
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
Cells.Select
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
Selection.FormulaHidden = True
Selection.Locked = True
ActiveSheet.Protect
Range("A1").Select
End Sub
Cái code này hôm qua mới thử ngon lành sao hôm nay nó lại báo lỗi nhỉ? Bác SA_DQ xem lại giùm em với
Em thấy trong này có 2 chổ bất hợp lý:
1> Nếu sheet chưa dc protect thì có dùng ActiveSheet.Unprotect dc ko?
2> Chưa có cell nào chứa công thức thì làm sao dùng dc code Selection.SpecialCells(xlCellTypeFormulas, 23).Select (Select cái gì đây?)
Vậy phải IF.. IF như thế nào nhỉ?
Hic... Hic...
ANH TUẤN
 
Lần chỉnh sửa cuối:
Upvote 0
Bác thử chạy code dưới xem có bị lỗi không ạ.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR=red]On Error Resume Next
[/COLOR]ActiveSheet.Unprotect
[COLOR=red]Cells.Locked = False
[/COLOR]Selection.SpecialCells(xlCellTypeFormulas, 23).Select
Selection.FormulaHidden = True
Selection.Locked = True
ActiveSheet.Protect
Range("A1").Select
End Sub
Xin phép được giải đáp 2 vấn đề mà bác anhtuan1066 đưa ra:
anhtuan1066 đã viết:
1> Nếu sheet chưa dc protect thì có dùng ActiveSheet.Unprotect dc ko?
2> Chưa có cell nào chứa công thức thì làm sao dùng dc code Selection.SpecialCells(xlCellTypeFormulas, 23).Select (Select cái gì đây?)
Vậy phải IF.. IF như thế nào nhỉ?
Vấn đề 1: Không vấn đề gì
Vấn đề 2: Bác thêm cái bẫy lỗi vào để tránh trường hợp toàn bộ sheet không có công thức.
Bác nên chọn Cells.Locked=False thay cho Cells.Select để có thể tiếp tục nhập dữ liệu ở những ô không có công thức.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình có đoạn code sau khi chạy nó tự động khóa những ô có công thức trong Worbook còn các khác nhập bình thường, Muốn sửa hoặc xóa các ô có công thì thì mình phải nhập Password là 1968 khi co trỏ rời khỏi ô thì ô đó sẽ tự động khóa không cho chỉnh sửa.

Cho mình hỏi đoạn code sau cần thêm câu lệnh gì để không hiện công trức trên thanh Formula Bar, mong được các bạn chỉ cụ thể cho mình với.

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 ("1968")
Exit Sub
Else
ActiveSheet.Unprotect ("1968")
End If
Next rng
End Sub
 
Upvote 0
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

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

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

Back
Top Bottom