Chống Paste dữ liệu vào một vùng (1 người xem)

  • Thread starter Thread starter vntranp
  • Ngày gửi Ngày gửi
Liên hệ QC

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

vntranp

Thành viên mới
Tham gia
11/9/13
Bài viết
7
Được thích
0
Gửi các anh Chị,

Mình có một cột dữ liệu (B1:B100). Cột này đã được set up sử dụng drop down để chọn. Mình muốn vùng dữ liệu này phải được fill bằng cách chọn drop down, không được copy từ sheet khác hoạc cell khác rồi paste vào vùng dữ liệu này.

Hiện tại mình đang sử dụng đoạn code bên dưới, tuy nhiên khi mở trên PC của mình thì ok, không paste vào được, nhưng mình để đặt file này trên ổ đĩa share, user khác vào mở bằng máy bằng PC của họ thị nó không tác dụng. Họ vẫn copy từ sheet khác rồi copy vào bình thường.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Union([B1:B100], [w6:y6])) Is Nothing Then
Application.CutCopyMode = False
Else
Exit Sub
End If
End Sub

Mình không biết về rành về Macro. Xin mọi người giúp mình với.

Cảm ơn mọi người và mong nhận được giúp đỡ.

T. P
 
Gửi các anh Chị,

Mình có một cột dữ liệu (B1:B100). Cột này đã được set up sử dụng drop down để chọn. Mình muốn vùng dữ liệu này phải được fill bằng cách chọn drop down, không được copy từ sheet khác hoạc cell khác rồi paste vào vùng dữ liệu này.

Hiện tại mình đang sử dụng đoạn code bên dưới, tuy nhiên khi mở trên PC của mình thì ok, không paste vào được, nhưng mình để đặt file này trên ổ đĩa share, user khác vào mở bằng máy bằng PC của họ thị nó không tác dụng. Họ vẫn copy từ sheet khác rồi copy vào bình thường.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Union([B1:B100], [w6:y6])) Is Nothing Then
Application.CutCopyMode = False
Else
Exit Sub
End If
End Sub

Mình không biết về rành về Macro. Xin mọi người giúp mình với.

Cảm ơn mọi người và mong nhận được giúp đỡ.

T. P

Chả cần máy khác, chả cần "họ". Bạn vẫn paste trên máy của mình bình thường.
Trước tiên bạn "soạn" dữ liệu cho Sheet2: Tại ô A1 bạn nhập "hichic"
Bây giờ là thao tác:

1. Bạn chọn sheet1. Bạn chọn ô B1. Do code của SelectionChange có Application.CutCopyMode = False nên Excel xóa Clipboard.
2. Bạn chọn sheet2. Bạn chọn ô A1 rồi copy
3. Trở về sheet1. Ô B1 đã chọn trước và không có gì thay đổi nên không sẩy ra SelectionChange, vậy dữ liệu trong clipboard vẫn có. Bạn chỉ cần paste là trong B1 có hichic.
 
Upvote 0
Cảm ỏn bạn về bài viết, minh không biết nhiều về đoạn code trên nên khi ban hướng dẫn mình vẫn không hiểu hết được. Bạn có thề hướng dẫn mình chi tiết hơn đươc không.
Mình đang cần là ngăn không cho paste dữ liệu vào vùng B1:B100 của sheet1. Dữ liệu phải đươc chọn từ drop down thôi.
 
Upvote 0
Cảm ỏn bạn về bài viết, minh không biết nhiều về đoạn code trên nên khi ban hướng dẫn mình vẫn không hiểu hết được. Bạn có thề hướng dẫn mình chi tiết hơn đươc không.
Mình đang cần là ngăn không cho paste dữ liệu vào vùng B1:B100 của sheet1. Dữ liệu phải đươc chọn từ drop down thôi.

Ý tôi là chưa cần ở máy khác mà ngay cả bạn ở máy của mình cũng có thể paste vào cột B được.
Trong bài của mình tôi nói về các bước nhấn chuột thì có gì là không hiểu? Bạn làm vài thao tác thì thấy là có thể paste vào cột B mà:

0. Chọn Sheet2. Tại ô A1 bạn nhập "hichic" - chỉ là vd. thôi. Trong thực tế thì ở sheet2, 3, 4 ... bạn có ô nào đó có dữ liệu
1. Bạn chọn sheet1. Bạn chọn ô B1.
2. Bạn chọn sheet2. Bạn chọn ô A1 rồi copy
3. Trở về sheet1. Bạn chỉ cần paste là trong B1 có hichic.
------------------
Nếu nói về cấm paste thì tôi có câu hỏi. Vd. trong cái mà bạn gọi là "drop down" ấy có "bla bla". Bạn chỉ cho phép chọn "bla bla" nhưng copy rồi paste từ chỗ khác cũng "bla bla" thì không cho phép? Vì như thế vô lý quá.

Hay là cứ cho người ta chọn hay dán tùy ý rồi sau đó "xét xem" cái "gì đó" có trong drop down không? Nếu không có thì mới "xử lý"?.

Nhưng làm gì thì cũng phải đưa tập tin lên. Có cái "drop down" với dữ liệu giả định. Nhiều người dùng từ "drop down" khi có Data Validation, khi có combobox. Nói miệng thế chả ai biết đâu mà lần.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình gửi file sample để bạn xem và giúp mình.

- Drop Down này chứa ngày hiện hành (Today).
- Tôi muốn một số người phải nhập dữ liệu hàng ngày, không để qua ngày hôm sau mới nhập vào. Nếu như hiện tại họ sẽ có thể nhập ngày hôm qua ở cell khác rồi copy vào đây.

Cảm ơn và mong nhận được phản hồi của bạn.
 

File đính kèm

Upvote 0
Mình gửi file sample để bạn xem và giúp mình.

- Drop Down này chứa ngày hiện hành (Today).
- Tôi muốn một số người phải nhập dữ liệu hàng ngày, không để qua ngày hôm sau mới nhập vào. Nếu như hiện tại họ sẽ có thể nhập ngày hôm qua ở cell khác rồi copy vào đây.

Cảm ơn và mong nhận được phản hồi của bạn.

Yêu cầu của bạn e rằng.. khó nhai!
Vì cho dù bạn khóa cách nào (dựa vào ngày), cùng lắm, tôi đổi ngày giờ hệ thống thành ngày của HÔM QUA thì cái gì sẽ nhận biết là tôi đang ăn gian?
 
Upvote 0
Giờ hệt thống không đổi được vì PC này của cty. IT đã khoá.
Đoạn code làm được điều này, nhưng khi file này được mở trên máy khác thì nó không tác dụng. Mình không biết máy mình đã chọn sẵn cái gì hay không thì không biết. Mình nghĩ nó liên quan đến Macro.
Mình đính kèm file sample lại. File này có đoạn code trên. Và hiện tại trên máy mình là ok. Mình không sure là trên máy bạn nó có ok không.
 

File đính kèm

Upvote 0
Giờ hệt thống không đổi được vì PC này của cty. IT đã khoá.
Đoạn code làm được điều này, nhưng khi file này được mở trên máy khác thì nó không tác dụng. Mình không biết máy mình đã chọn sẵn cái gì hay không thì không biết. Mình nghĩ nó liên quan đến Macro.
Mình đính kèm file sample lại. File này có đoạn code trên. Và hiện tại trên máy mình là ok. Mình không sure là trên máy bạn nó có ok không.

Nếu 1 mình bạn xài thì có thể nghiên cứu. Nếu mang sang máy khác thì thôi.. nghỉ đi. Vì bạn phải mất công sang máy tính đó thiết lập phần Macro Option (trong Excel Options) nó mới chạy được
Có 1 cách khác: Chuyển file của bạn thành file EXE (máy nào cũng chạy được)
------------
Nói thêm: Bạn nói rằng
Đoạn code làm được điều này.
Tôi e rằng bạn NÓI QUÁ. Vì thực chất nó chẳng ngăn cản được cái gì cả
- Tại sheet 1, tôi chọn cell B3
- Tôi nhảy sang sheet2, gõ gì gì đó vào 1 cell nào đó rồi copy chính cell vừa gõ
- Giờ tôi nhảy sang sheet1, không chọn cell nào cả, chỉ bấm tổ hợp phím Ctrl + V là xong
Bạn thử nghiệm chưa?
 
Lần chỉnh sửa cuối:
Upvote 0
Theo mình, cách không cho past vào vùng nào đó thì ...........đừng cho chọn vào vùng đó
Theo thí dụ trong bài, ta hổng cho xâm nhập vào [B1:B100] & [W6:Z6]
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Union([b1:b100], [w6:y6])) Is Nothing Then
        [A1].Select
    End If
End Sub
Muốn nhập dữ liệu ở cột A thì cột B có dữ liệu là ngày hiện hành
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [a1:a100]) Is Nothing Then
        If Len(Target) Then Target.Offset(, 1) = VBA.Date
    End If
End Sub
Híhi, mình thấy nó làm sao í Híc
Thân
 
Upvote 0
Theo mình, cách không cho past vào vùng nào đó thì ...........đừng cho chọn vào vùng đó
Theo thí dụ trong bài, ta hổng cho xâm nhập vào [B1:B100] & [W6:Z6]
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Union([b1:b100], [w6:y6])) Is Nothing Then
        [A1].Select
    End If
End Sub
Muốn nhập dữ liệu ở cột A thì cột B có dữ liệu là ngày hiện hành
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [a1:a100]) Is Nothing Then
        If Len(Target) Then Target.Offset(, 1) = VBA.Date
    End If
End Sub
Híhi, mình thấy nó làm sao í Híc
Thân
Thì em cũng copy vùng khác rồi paste vào được vậy anh! (copy 2 cell rồi chọn vào cột A để paste)
 
Upvote 0
Giờ hệt thống không đổi được vì PC này của cty. IT đã khoá.
Đoạn code làm được điều này, nhưng khi file này được mở trên máy khác thì nó không tác dụng. Mình không biết máy mình đã chọn sẵn cái gì hay không thì không biết. Mình nghĩ nó liên quan đến Macro.
Mình đính kèm file sample lại. File này có đoạn code trên. Và hiện tại trên máy mình là ok. Mình không sure là trên máy bạn nó có ok không.

Tôi viết tận 2 bài #2, #4. Trong 2 bài tôi viết bằng tiếng VIệt, tôi liệt kê rõ tuần tự từng bước thao tác. Bạn có làm đúng như thế không? Làm đúng các thao tác đó mà bạn cho là "trên máy mình là ok"? Tôi đã giải thích cho bạn rõ mà: sau khi copy ở sheet2 và quay lại sheet1 thì bạn không chọn ô nào của cột B cả do đã chọn trước khi thao tác copy ở sheet2 rồi. Tức không sẩy ra SelectionChange nữa, và do vậy cái mà bạn copy trước đó vẫn ngủ ngon trong clipboard. Vậy thì Ctrl + V là copy vào ô ở cột B. Thế thôi.
Mà thực ra bạn có cần hiểu tại sao đâu. Bạn cứ làm như tôi hướng dẫn là thấy là: ừ đúng, trên máy mình KHÔNG ok"
----------------
Code của bạn hiện thời không xử lý được kẻ gian. Nếu người ta muốn ăn gian thì cũng chả cần thay đổi ngày hệ thống. Mà như bạn nói thì không thay được vì ... Thế thì thế này được không? Tôi sang sheet2 và sửa lại công thức cho A1 = TODAY()-1. Quay về sheet1 tôi chọn ngày trong "drop down". Nó chỉ có ngày hôm qua thôi. Khỏi phải copy / paste nhé.
--------------
Tôi đã nói ở bài #4 rồi. Ở trường hợp của bạn thì cũng chả cần công thức ở sheet2!A1 và cũng chả cần "drop down" cho cột B trong sheet1. Nhưng nên có để người ta chỉ chọn chứ không bắt phải gõ. Hoặc "bớt" cho người ta việc nhập vào cột B mà code sẽ tự nhập ngày hiện hành. Để chống việc người ta sửa lại ngày - ăn gian - thì như tôi đã nói: cứ cho họ nhập xong rồi ta "xử lý". Ở đây vd. là thay bằng ngày hiện hành. Khóa code để họ không vào xem và sửa được. Chống việ người ta disable macro cũng có cách. Trong vd. Auto_Open ta ghi một thông tin nào đó vào một nơi bí mật nào đó. Khi nhận được tập tin của họ ta kiểm tra thông tin: nếu không có tức họ đã disable macro. Nói chung ta chống người ngay, chống người "bình thường", làm khó dễ cho người ta. Những đề xuất ở trên chỉ là những suy ngĩ "nhanh", tùy trường hợp cụ thể mà ta "chế thuốc".
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn mọi người rất nhiều. Mình sử dụng đoạn code cua ban Concogia thấy ok. Đúng như mong đởi của mình. Bằng cách này mình sẽ proctect cột này.

Cảm ơn, cảm ơn rất nhiều các anh chị.
 
Upvote 0
Mình sử dụng code trên thấy ok, nhưng khi mình protect a1:a100 với protect sheet thi nó báo lỗi "Run-time eror 1004"
 
Upvote 0
Web KT

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

Back
Top Bottom