Các anh chị giúp em vấn đề này ạ:
Em có một file bảng tính lương sản phẩm chứa nhiều công thức. Để giảm bớt dung lượng file, em đang sử dụng vba sau để mỗi lần kick đúp chuột sẽ copy thêm một dòng chứa công thức như những dòng ở trên.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
r = Target.Row
If r = 1 Then Exit Sub
cc = Target.SpecialCells(xlCellTypeLastCell).Column
Target.EntireRow.Insert
For c = 1 To cc
If Cells(r - 1, c).HasFormula = True Then
Cells(r, c).FormulaR1C1 = Cells(r - 1, c).FormulaR1C1
End If
Next
End Sub
Đoạn mã lệnh này hoạt động ok. Vấn đề là em lại muốn bảo vệ các ô chứa công thức bằng cách Protect sheet (nếu bấm vào các ô chứa công thức), em dùng đoạn mã sau:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Locked = True Then
Me.Protect Password:="pth&nkt"
Else
Me.Unprotect Password:="pth&nkt"
End If
End Sub
Vậy là khi em kích đúp chuột thì mã VBA không hoạt động mà báo lỗi Run time error '1004'
Em gà về VBA nên chưa hiểu tại sao khi em chọn ô không chứa công thức thì sheet đã được unprotect mà đoạn mã kích đúp xuống dòng copy lại không hoạt động được, hay phải kết hợp lồng hai đoạn mã với nhau?
Các bác làm ơn giúp em với, gấp lắm rồi ạ.
Thanks & best Rgds!
Em có một file bảng tính lương sản phẩm chứa nhiều công thức. Để giảm bớt dung lượng file, em đang sử dụng vba sau để mỗi lần kick đúp chuột sẽ copy thêm một dòng chứa công thức như những dòng ở trên.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
r = Target.Row
If r = 1 Then Exit Sub
cc = Target.SpecialCells(xlCellTypeLastCell).Column
Target.EntireRow.Insert
For c = 1 To cc
If Cells(r - 1, c).HasFormula = True Then
Cells(r, c).FormulaR1C1 = Cells(r - 1, c).FormulaR1C1
End If
Next
End Sub
Đoạn mã lệnh này hoạt động ok. Vấn đề là em lại muốn bảo vệ các ô chứa công thức bằng cách Protect sheet (nếu bấm vào các ô chứa công thức), em dùng đoạn mã sau:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Locked = True Then
Me.Protect Password:="pth&nkt"
Else
Me.Unprotect Password:="pth&nkt"
End If
End Sub
Vậy là khi em kích đúp chuột thì mã VBA không hoạt động mà báo lỗi Run time error '1004'
Em gà về VBA nên chưa hiểu tại sao khi em chọn ô không chứa công thức thì sheet đã được unprotect mà đoạn mã kích đúp xuống dòng copy lại không hoạt động được, hay phải kết hợp lồng hai đoạn mã với nhau?
Các bác làm ơn giúp em với, gấp lắm rồi ạ.
Thanks & best Rgds!
Lần chỉnh sửa cuối: