An công thức trong Excel bằng VBA

An công thức trong Excel bằng VBA

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!

Đúng rồi bạn ạ, bạn có cách nào chỉ mình với.

An công thức trong Excel bằng VBA

Ủ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

An công thức trong Excel bằng VBA

À, 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!

An công thức trong Excel bằng VBA

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

An công thức trong Excel bằng VBA

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 ??

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!

An công thức trong Excel bằng VBA

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

An công thức trong Excel bằng VBA

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!

An công thức trong Excel bằng VBA

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:

[b] Sub MacroGoTo()[/b] Cells.Select Selection.SpecialCells(xlCellTypeFormulas, 23).Select[b] End Sub[/b]

An công thức trong Excel bằng VBA

/-(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!!)
An công thức trong Excel bằng VBA

Lần chỉnh sửa cuối: 9/10/07

An công thức trong Excel bằng VBA

Tuấn ghi macro với lệnh Goto trong menu edit ; nó sẽ như thế này:

[B] Sub MacroGoTo()[/B] Cells.Select Selection.SpecialCells(xlCellTypeFormulas, 23).Select[B] End Sub[/B]

An công thức trong Excel bằng VBA


Tuyệt vời.
An công thức trong Excel bằng VBA
An công thức trong Excel bằng VBA

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

An công thức trong Excel bằng VBA
An công thức trong Excel bằng VBA
An công thức trong Excel bằng VBA
. Chắc do . . . bản năng
An công thức trong Excel bằng VBA

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!

An công thức trong Excel bằng VBA

Đú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

An công thức trong Excel bằng VBA

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

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

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

An công thức trong Excel bằng VBA

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: 11/10/07

An công thức trong Excel bằng VBA

Bác thử chạy code dưới xem có bị lỗi không ạ.

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:

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: 11/10/07

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


Page 2

An công thức trong Excel bằng VBA

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

An công thức trong Excel bằng VBA

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:

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: 12/10/07

An công thức trong Excel bằng VBA

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

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.

An công thức trong Excel bằng VBA

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...

An công thức trong Excel bằng VBA

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")


Bác xem có được không nhé.

Chỉnh sửa lần cuối bởi điều hành viên: 16/10/07

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

An công thức trong Excel bằng VBA

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

An công thức trong Excel bằng VBA

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).

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ộ

Chỉnh sửa lần cuối bởi điều hành viên: 16/10/07

An công thức trong Excel bằng VBA

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).

EM hỏi

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.