GIÚP CODE CHỈ CHO COPY,PASTE KHÔNG CHO CUT,DragAndDrop (1 người xem)

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

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
22/7/14
Bài viết
355
Được thích
31
Tôi có dùng đoạn code sau để chỉ cho người dùng Copy, Paste không cho Cut, DragAndDrop . Do trình độ người sử dụng tin học yếu, nến Cut thì công thức sai hết

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B4:I18")) Is Nothing Then ' Khong cho copy, cut
Application.CellDragAndDrop = False
End If
End Sub

khi Copy thì Paste được
khi Cut thì không Paste được
khi CellDragAndDrop thì cũng không được luôn
 
Sao bạn không khóa vùng đó? Excel có chức năng Protect Sheet mà bạn?
 
Upvote 0
Không khóa Protect Sheet, tại vì vùng đó cần phải nhập liệu nữa bạn ak
Nếu là tôi và file đó chỉ một mình tôi làm, thì tôi chả sợ ai phá vỡ cấu trúc và như thế thì tôi cũng chả bận tâm đến việc ngăn không cho hay khóa sheet, nhưng nếu file đó tôi dùng cho nhiều người thì những ô nào chứa hàm, công thức tôi Locked lại, những ô khác tôi UnLocked thì người ta chỉ có thể nhập những gì vào vùng tôi cho phép.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Nếu là tôi và file đó chỉ một mình tôi làm, thì tôi chả sợ ai phá vỡ cấu trúc và như thế thì tôi cũng chả bận tâm đến việc ngăn không cho hay khóa sheet, nhưng nếu file đó tôi dùng cho nhiều người thì những ô nào chứa hàm, công thức tôi Locked lại, những ô khác tôi UnLocked thì người ta chỉ có thể nhập những gì vào vùng tôi cho phép.

Ví dụ chơi thôi nha:
- Cell F5 có công thức =A1, F6 có công thức =A2... vân vân... (và tương tự vậy cho đến F19)
- Giờ tôi chỉ cần quét chọn A5:A19 rồi kéo thả đến A1 là xem như khu vực màu vàng toi đời, bất chấp vùng màu vàng có khóa hay không
---------------------
Người dùng Excel rất sợ cái chuyện kéo thả hoặc xóa dòng cột ---> Có thể làm cho công thức liên kết tan tành. Khóa bảng tính thì cứ khóa, nhưng cứ chừa cho người ta một vùng nhập liệu tại đâu đó là xem như có NGUY HIỂM, trừ phi là ta không có bất cứ công thức nào liên kết đến vùng nhập liệu này (nhưng làm gì có chuyên vô lý vậy)
 
Upvote 0
Ví dụ chơi thôi nha:
- Cell F5 có công thức =A1, F6 có công thức =A2... vân vân... (và tương tự vậy cho đến F19)
- Giờ tôi chỉ cần quét chọn A5:A19 rồi kéo thả đến A1 là xem như khu vực màu vàng toi đời, bất chấp vùng màu vàng có khóa hay không
---------------------
Người dùng Excel rất sợ cái chuyện kéo thả hoặc xóa dòng cột ---> Có thể làm cho công thức liên kết tan tành. Khóa bảng tính thì cứ khóa, nhưng cứ chừa cho người ta một vùng nhập liệu tại đâu đó là xem như có NGUY HIỂM, trừ phi là ta không có bất cứ công thức nào liên kết đến vùng nhập liệu này (nhưng làm gì có chuyên vô lý vậy)
Đằng nào cũng có lỗ hổng thôi Thầy ạ. Vậy em viết tạm code cho người này như vầy ạ:

Tại Sheet Module của sheet Event:

Mã:
Option Explicit
[COLOR=#0000ff]''Khi sheet được chọn sẽ khóa Drag:[/COLOR]
Private Sub Worksheet_Activate()
    Application.CellDragAndDrop = False
End Sub
[COLOR=#0000ff]''Khi qua sheet khác, cho phép Drag:[/COLOR]
Private Sub Worksheet_Deactivate()
    Application.CellDragAndDrop = True
End Sub
[COLOR=#0000ff]''Chọn bất cứ ô nào, nếu có hiện tượng Cut thì ngăn lại:[/COLOR]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Application.CutCopyMode = xlCut Then
        Application.CutCopyMode = False
    End If
End Sub

Thêm việc cho phép Drag khi qua Workbook khác, code tại ThisWorkbook Module:

Mã:
Option Explicit

Private Sub Workbook_Activate()
    If ActiveSheet.Name = "Event" Then
        Application.CellDragAndDrop = False
    End If
End Sub

Private Sub Workbook_Deactivate()
    Application.CellDragAndDrop = True
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Đằng nào cũng có lỗ hổng thôi Thầy ạ. Vậy em viết tạm code cho người này như vầy ạ:

Từ những lý do như ở bài 5 đã nêu, người ta nghĩ đến việc nhập liệu bằng VBA. Có thể bằng UserForm hoặc nhập trực tiếp trên bảng tính tùy theo nhu cầu
Điều quan trọng là phần nhập liệu sẽ không chứa bất cứ công thức liên kết nào, chỉ khi xong việc, người ta mới dùng code để xử lý dữ liệu thô thành kết quả
Và đã dùng VBA để xử lý dữ liệu thì chúng ta lại chẳng cần đến việc khóa bảng tính hay khóa các chức năng CUT, COPY, PASTE cho mất công
---------------------
Quan điểm riêng của tôi thôi, có thể Nghĩa là các bạn khác lại thích kiểu.. khác
 
Upvote 0
Từ những lý do như ở bài 5 đã nêu, người ta nghĩ đến việc nhập liệu bằng VBA. Có thể bằng UserForm hoặc nhập trực tiếp trên bảng tính tùy theo nhu cầu
Điều quan trọng là phần nhập liệu sẽ không chứa bất cứ công thức liên kết nào, chỉ khi xong việc, người ta mới dùng code để xử lý dữ liệu thô thành kết quả
Và đã dùng VBA để xử lý dữ liệu thì chúng ta lại chẳng cần đến việc khóa bảng tính hay khóa các chức năng CUT, COPY, PASTE cho mất công
---------------------
Quan điểm riêng của tôi thôi, có thể Nghĩa là các bạn khác lại thích kiểu.. khác
Em chỉ trả lời theo yêu cầu mà thôi, việc thiết kế chương trình hay một ứng dụng của em thì không có một công thức nào cả! Cũng không thể thấy sheet để mà nhập vào CSDL gì đâu! Dĩ nhiên người nhập mỗi việc trên Form mà thôi! Học hỏi tại GPE cũng nhờ ở các Thầy em mới được nhiêu đó kiến thức đấy! ;;;;;;;;;;;
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom