Namvba đã viết:Đúng rồi bạn ạ, bạn có cách nào chỉ mình với.
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
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
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
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?
[b]
Sub MacroGoTo()[/b]
Cells.Select
Selection.SpecialCells(xlCellTypeFormulas, 23).Select[b]
End Sub[/b]
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]
![]()
Quá đãaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPrivate 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
Selection.Locked = True
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ớiPrivate 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
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
Vấn đề 1: Không vấn đề gì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ỉ?
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
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!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
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