minhhangg
Thành viên hoạt động
- Tham gia
- 4/5/11
- Bài viết
- 197
- Được thích
- 61
Tắt chức năng paste trong sheet này luôn được hông?Bài này có giải quyết được không hé các anh chị, thành viên GPE. Cảm ơn
Bài này có giải quyết được không hé các anh chị, thành viên GPE. Cảm ơn
Bạn hướng dẫn thêm cho mình tắt chức năng paste, Cảm ơn BATETắt chức năng paste trong sheet này luôn được hông?
Tắt chức năng paste trong sheet này luôn được hông?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 16 Or Target.Column > 6 Then Exit Sub
Application.CutCopyMode = False
End Sub
Cảm ơn anh. Em thì không rành VBA. Tuy nhiên là không cho copy 1 vùng c6:h55 và vùng và j6:N6 thì có sửa code lại không anh và đặc biệt là có nhiều sheet giống như vậy, cảm ơn anhBác ơi, nên chọn vùng hạn chế chứ! Như vầy đi:
PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row > 16 Or Target.Column > 6 Then Exit Sub Application.CutCopyMode = False End Sub
Xem thử file này đi.Cảm ơn anh. Em thì không rành VBA. Tuy nhiên là không cho copy 1 vùng c6:h55 và vùng và j6:N6 thì có sửa code lại không anh và đặc biệt là có nhiều sheet giống như vậy, cảm ơn anh
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Union([C6:H55], [J6:N6])) Is Nothing Then
Application.CutCopyMode = False
Else
Exit Sub
End If
End Sub
Chỉ cần như vầy thôi anh ơi: Đưa code này vào đối tượng ThisWorkbookXem thử file này đi.
Nếu có nhiều sheet cần tác dụng tương tự thì chép code này vào từng sheet.
HTML:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Union([C6:H55], [J6:N6])) Is Nothing Then Application.CutCopyMode = False Else Exit Sub End If End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Intersect(Target, Union(Sh.[C6:H55], Sh.[J6:N6])) Is Nothing Then Exit Sub
Application.CutCopyMode = False
End Sub
Else
Exit sub
Xem thử file này đi.
Nếu có nhiều sheet cần tác dụng tương tự thì chép code này vào từng sheet.
HTML:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Union([C6:H55], [J6:N6])) Is Nothing Then Application.CutCopyMode = False Else Exit Sub End If End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Union([C6:H55], [J6:N6])) Is Nothing Then Application.CutCopyMode = False
End Sub
Chỉ cần như vầy thôi anh ơi: Đưa code này vào đối tượng ThisWorkbook
PHP:Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Intersect(Target, Union(Sh.[C6:H55], Sh.[J6:N6])) Is Nothing Then Exit Sub Application.CutCopyMode = False End Sub
Cái này thì xử lý dễ ẹc chứ khó gì đâu. Chẳng hạn bạn chỉ muốn áp dụng code cho các sheet: Sheet1, Sheet3, Sheet10 thì code sẽ như vầy nè:Tôi nghĩ hạn chế sheet nào thì làm sheet đó, chứ đưa vào ThisWorkbook nó triệt tiêu hết tất cả các sheet thì ẹc... ẹc...
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If InStr(".Sheet1.Sheet3.Sheet10.", "." & Sh.Name & ".") = 0 Then Exit Sub
If Not Intersect(Target, Union(Sh.[C6:H55], Sh.[J6:N6])) Is Nothing Then Application.CutCopyMode = False
End Sub
Cái này thì xử lý dễ ẹc chứ khó gì đâu. Chẳng hạn bạn chỉ muốn áp dụng code cho các sheet: Sheet1, Sheet3, Sheet10 thì code sẽ như vầy nè:
Muốn thêm danh sách Sheet áp dụng code thì cứ thêm vào trong hàm InStr là xong.PHP:Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If InStr(".Sheet1.Sheet3.Sheet10.", "." & Sh.Name & ".") = 0 Then Exit Sub If Not Intersect(Target, Union(Sh.[C6:H55], Sh.[J6:N6])) Is Nothing Then Application.CutCopyMode = False End Sub
Vậy có cách nào để ko copy được dữ liệu trong 1 sheet ko các Bác? Tức là khi kích chuột phải thì nó không hiện copy lên hoặc thực hiện thao tác Ctrl +C thì nó ko có tác dụng ?
Private Sub Worksheet_Deactivate()
Application.CutCopyMode = False
End Sub
Vậy thì em gửi File lên đi và nói rõ sheet nào cần không cho copy vào vùng "cấm địa", Bác Ba Tê, Anh NghiaPhuc sẳn sàng giúp đỡ em liền!!!Trước hết cảm ơn mấy và sorry nhiều lắm, Mấy anh làm sao chứ, em làm rồi không được. ví dụ mở 1 file excell mới bắt đầu copy và paste vào vẫn bình thường. Mấy anh thí nghiệm thử dùm em. Cảm ơn
Thì cũng cái file em gữi ở trên đó anh. Anh mở file của em và mở thêm 1 file mới nữa và dùng lệnh copy /paste được bình thường đó anh.
Cũng dễ thôi. Đại khái là cho copy, nhưng qua sheet khác thì chặn lại:
PHP:Private Sub Worksheet_Deactivate() Application.CutCopyMode = False End Sub
Mình thấy code này chỉ ko cho copy và pase trong cùng 1 file thôi. Chứ mình mà mở file mới thì vẫn pase được. Có cách nào để mở file mới hoặc file khác thì vẫn ko copy được ko bạn?
Không nhất thiết phải mở file mới đâu, bạn chỉ cần chọn ô trong vùng "cấm địa". Sau đó copy dữ liệu từ 1 sheet khác trong file này, sau đó quay lại sheet lúc nãy (nhưng đừng chọn lại ô nhé, cứ để nguyên ô đã chọn lúc nãy và dán) thì vẫn dán như thường. Sở dĩ có hiện tượng này là vì code trên có tên là Workbook_SheetSelectionChange, có nghĩa là nó chỉ được kích hoạt khi có sự thay đổi ô/vùng chọn.Em đồng ý với anh là không copy trên file này thì không được, nhưng mở 1 file mới anh copy và paste vào là bình thường.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If InStr(ShChan, "." & Sh.Name & ".") > 0 Then Sh.[A1].Select
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
If InStr(".Sheet1.Sheet2.", "." & ActiveSheet.Name & ".") > 0 Then ActiveSheet.[A1].Select
End Sub
Const ShChan As String = ".Sheet1.Sheet2."
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If InStr(ShChan, "." & Sh.Name & ".") > 0 Then Sh.[A1].Select
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If InStr(ShChan, "." & Sh.Name & ".") = 0 Then Exit Sub
If Not Intersect(Target, Union(Sh.[C6:H55], Sh.[J6:N6])) Is Nothing Then Application.CutCopyMode = False
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
If InStr(ShChan, "." & ActiveSheet.Name & ".") > 0 Then ActiveSheet.[A1].Select
End Sub