Khóa chức năng Paste dữ liệu vào 1 vùng theo điều kiện cho trước

Liên hệ QC

dpsangcva

Thành viên mới
Tham gia
9/11/07
Bài viết
45
Được thích
26
Ở ô A1 tôi có tạo ra 1 điều kiện.

Tôi muốn sử dụng điều kiện này để cho phép hoặc không cho phép Paste dữ liệu (đã được copy ở 1 vùng khác) vào vùng B1:E5 như sau:

+ Nếu Ô A1 true thì cho phép Paste dữ liệu đã được copy từ chỗ khác vào B1:E5.
+ Nếu Ô A1false thì không cho phép Paste bất kỳ dữ liệu nào vào vùng đó.

Có ai làm được việc trên không xin chỉ tôi với!

Thanks!
 
Ở ô A1 tôi có tạo ra 1 điều kiện.
+ Nếu là true thì cho phép Paste dữ liệu đã được copy từ chỗ khác vào B1:E5.
+ Nếu là false thì không cho phép Paste bất kỳ dữ liệu nào vào vùng đó.
Có ai làm được việc trên không xin chỉ tôi với!
Bạn dùng macro sự kiện như sau để gọi macro KhoaVung theo ý bạn
Macro KhoaVung bạn có thể ghi bằng bộ thu macro của excel,
sau đó chỉnh sửa lại hay tìm trên diễn đàn đã có (với từ khóa Password)

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [A1]) Is Nothing Then
   If Target Then
      KhoaVung True
   Else
      KhoaVung
   End If
 End If
End Sub
PHP:
Sub KhoaVung(Optional Khoa As Boolean = False)
  ' Mã các lệnh khóa vùng . . . . . . . . . . . . '
End Sub
 
Bạn dùng chức năng khóa vùng của bác rollover79 đi. Bạn nhấn phải vào tên Sheet chọn View Code -> Rồi nhập đoạn code bên dưới vào!
PHP:
Private Sub Worksheet_Change(ByVal Target As Range) If [A1].Value = "False" And Not Intersect(Target, [B1:E5]) Is Nothing Then         Application.EnableEvents = False         Application.Undo         Application.CutCopyMode = False         Application.EnableEvents = True         Exit Sub End If End Sub
Thân.
 
Lần chỉnh sửa cuối:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If [A1].Value = "False" And Not Intersect(Target, [B1:E5]) Is Nothing Then
        Application.EnableEvents = False
        Application.Undo
        Application.CutCopyMode = False
        Application.EnableEvents = True
        Exit Sub
End If
End Sub
Code ngắn gọn mà hiệu quả lắm.

Cho tôi hỏi thêm nhé.

Khi điều kiện ở ô A1 là true rồi, tất nhiên ta được phép Paste dữ liệu vào vùng B1:E5. Tuy nhiên khi Paste dữ liệu thì định dạng của dữ liệu và các công thức sẽ được dán theo. Có cách nào để khi Paste vào chỉ cho paste giá trị thôi hay không (Paste Special -> Value).

Xin cảm ơn!
 
Mình không biết có cách nào chuyển dữ liệu từ hàm nên chỉ có thể xóa định dạng cho bạn thôi! Bạn sữa code trên lại thành như vầy!
PHP:
Private Sub Worksheet_Change(ByVal Target As Range) If [A1].Value = "False" And Not Intersect(Target, [B1:E5]) Is Nothing Then         Application.EnableEvents = False         Application.Undo         Application.CutCopyMode = False         Application.EnableEvents = True         Exit Sub ElseIf [A1].Value = "True" Then         [B1:E5].ClearFormats End If End Sub
Thân.
 
Lần chỉnh sửa cuối:
Code ngắn gọn mà hiệu quả lắm.

Cho tôi hỏi thêm nhé.

Khi điều kiện ở ô A1 là true rồi, tất nhiên ta được phép Paste dữ liệu vào vùng B1:E5. Tuy nhiên khi Paste dữ liệu thì định dạng của dữ liệu và các công thức sẽ được dán theo. Có cách nào để khi Paste vào chỉ cho paste giá trị thôi hay không (Paste Special -> Value).

Xin cảm ơn!
Nếu bạn Paste bằng tay thì lúc Paste bạn chọn luôn thành Paste Special đi. Còn dùng code thì bạn tìm hiểu thêm phương thức PasteSpecial trong VBA.
 
Nếu bạn thật sự muốn dùng code khỏi phải nhất phải chuột thì bạn dùng file này của mình! Cũng khá hiệu quả chỉ có là phải chờ thêm 1 giây nữa thôi! Thân.
 

File đính kèm

  • PasteSpecial.xls
    27 KB · Đọc: 36
Lần chỉnh sửa cuối:
Chỉ cần dùng Application.Calculate thì vùng nhớ trong Clipboard lập tức sẽ bị hủy
Vậy khi người ta copy xong, nếu chọn vào 1 trong các cell B1:E5 thì dùng sự kiện SelectionChange kết hợp điều kiện tại cell điều kiện... Nếu điều kiện là KHÔNG CHO PHÉP thì ta... Calculate là xong---> Đố Paste được đấy
 
Chỉ cần dùng Application.Calculate thì vùng nhớ trong Clipboard lập tức sẽ bị hủy
Vậy khi người ta copy xong, nếu chọn vào 1 trong các cell B1:E5 thì dùng sự kiện SelectionChange kết hợp điều kiện tại cell điều kiện... Nếu điều kiện là KHÔNG CHO PHÉP thì ta... Calculate là xong---> Đố Paste được đấy

Chỉ cần chọn cell cần paste trước, rùi qua sheet khác copy. xong quay lại cell đó paste là được đó bác.
 
Web KT

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

Back
Top Bottom