Thao tác với bảng tính Excel, chắc bạn cũng quá quen với lệnh Cut (Ctrl + X), Copy (Ctrl + C) và dán dữ liệu bằng lệnh Paste (Ctrl + V). Vậy trong VBA Excel, các lệnh trên sẽ được sử dụng và thực hiện như thế nào?
VBA Excel đã hỗ trợ sẵn các lệnh như Cut, Copy, Paste và đặc biệt là Paste Special. Và làm sao để sử dụng thì bài viết này sẽ giúp bạn.
Cách Copy và Paste bằng VBA Excel
Bằng VBA bạn có thể copy Cells hoặc Range. Và khi Paste, bạn cần chỉ định Cells bắt đầu, Excel sẽ tự động điền theo thứ tự hoặc bạn có thể tự lựa chọn.
Sub copy_paste()
Dim wb As Workbook
Dim sh As Worksheet
Set wb = ThisWorkbook
Set sh = wb.Sheets(1)
sh.Range("A1:H6").Copy Destination:=sh.Range("J2")
sh.Range("J2:Q7").EntireColumn.AutoFit
End Sub
Code language: Vala (vala)
Cut và Paste
Khác với Copy là sao chép dữ liệu, lệnh Cut sẽ sao chép dữ liệu và đồng thời cũng xóa dữ liệu gốc.
Về cách viết lệnh cũng tương tự như Copy, bạn chỉ cần thay đổi lệnh Copy thành Cut.
Sub cut_paste()
Dim wb As Workbook
Dim sh As Worksheet
Set wb = ThisWorkbook
Set sh = wb.Sheets(1)
sh.Range("A1:H6").Cut Destination:=sh.Range("J2")
sh.Range("J2:Q7").EntireColumn.AutoFit
End Sub
Code language: JavaScript (javascript)
Với Copy hoặc Cut và Paste vừa tìm hiểu thì bạn đã có thể lấy được giá trị, Formula, định dạng, Comments …Tuy vậy, Excel cùng hỗ trợ Paste Special với nhiều tùy chọn khác nhau. Vậy Paste Special sẽ giúp chúng ta thực hiện được những gì?
Paste Special
Paste Special sẽ giúp bạn Paste dữ liệu theo chủ đích.
Ví dụ, bạn chỉ muốn giữ lấy giá trị hoặc định dạng dữ liệu hoặc Formula trong vùng dữ liệu được Copy. Thì lệnh Paste thông thường sẽ không thực hiện được mà bạn phải sử dụng PasteSpecial.
Vậy trong VBA Excel, làm sao để sử dụng Paste Special?
Các bạn xét qua các ví dụ dưới đây nhé.
Ví dụ: Cho một bảng giá trị như hình. Trong đó,
- Tổng: công thức tính (Số 1 + Số 2)
- Hiệu: công thức tính (Số 1 – Số 2)
- Định dạng tùy chỉnh: số âm màu đỏ, số dương màu xanh
[Blue]###_);[Red](###);#;"text "@
Code language: CSS (css)
=> Thao khảo: Định dạng tùy chỉnh Excel.
- Sử dụng hàm VBA như dưới đây:
Sub paste_special()
Dim wb As Workbook
Dim sh As Worksheet
Set wb = ThisWorkbook
Set sh = wb.Sheets(1)
sh.Range("B2:E9").Copy
'Them lenh Spate Special vao bên duoi
End Sub
Code language: PHP (php)
PasteValues
sh.Range("H2:K9").PasteSpecial xlPasteValues
Code language: CSS (css)
=> Kết quả: Lệnh Paste xlPasteValues chỉ lấy giá trị trong vùng dữ liệu được Copy và không lấy các loại định dạng.
PasteFormats
sh.Range("H2:K9").PasteSpecial xlPasteFormats
Code language: CSS (css)
Kết quả: Lệnh Paste xlPasteFormats sẽ chỉ lấy các định dạng Format, bao gồm các định dạng Text, Number… và không lấy giá trị.
PasteFormulas
sh.Range("H2:K9").PasteSpecial xlPasteFormulas
Code language: CSS (css)
Kết quả: Lệnh Paste xlPasteFormats sẽ lấy giá trị và bao gồm cả công thức tính và không lấy định dạng. Các địa chỉ trong công thức cũng sẽ được tự động điều chỉnh.
PasteComments
sh.Range("H2:K9").PasteSpecial xlPasteComments
Code language: CSS (css)
Kết quả: Lệnh Paste xlPasteComments chỉ lấy các Comments trong vùng giá trị được sao chép.
PasteValuesAndNumberFormats
sh.Range("H2:K9").PasteSpecial xlPasteValuesAndNumberFormats
Code language: CSS (css)
Kết quả: Lệnh Paste xlPasteValuesAndNumberFormats sẽ lấy giá trị và các định dạng dữ liệu Number và không lấy các định dạng khác.
PasteValidation
sh.Range("").PasteSpecial xlPasteValidation
Code language: CSS (css)
Lệnh xlPasteValidation được sử dụng khi bạn muốn sao chép các dữ liệu trong Range chứa các Data Validation.
Ví dụ: Tạo một Combobox bằng Data Validation, khi sử dụng lệnh xlPasteValidation nó sẽ lấy các thuộc tính để tạo một Combobox khác và không bao gồm giá trị hiện tại của Combobox được sao chép.
Kết luận
Như vậy, bạn đã tìm hiểu quá các lệnh Copy, Cut, Paste và PasteSpecial thông dụng được sử dụng trong VBA Excel. Với các kiến thức đã được trình bày, hy vọng bạn đã có thể áp dụng vào công việc của mình.
Chúc bạn vui!