Bài 2. Ghi macro

Liên hệ QC

befaint

|||||||||||||
Tham gia
6/1/11
Bài viết
14,372
Được thích
19,335
Bài 2. Ghi macro

(Danh sách các bài viết về VBA xem ở đây Index - Các bài viết về VBA)

Ghi macro (Record Macro) là một công cụ rất hữu ích trong Excel VBA, nó ghi lại các thao tác thực hiện trên bảng tính Excel.
Bạn chỉ cần ghi lại một tác vụ (một hoặc nhiều thao tác) thực hiện với bảng tính Excel. Tiếp đó, bạn gán nó (assign macro) vào một nút lệnh rồi click nút lệnh đó để lặp lại tác vụ vừa được ghi.
Mặt khác, khi bạn không rõ, không biết tạo một chương trình (tác vụ) cụ thể trong VBA thì bạn hãy sử dụng chức năng ghi macro. Sau khi bạn ghi macro xong, bạn có thể vào cửa sổ VBA để xem chi tiết macro đó.
Tuy nhiên, macro được tạo ra bởi việc ghi macro có nhược điểm. Đó là, macro đó áp dụng cụ thể với trường hợp bạn vừa thao tác và ghi lại, câu lệnh chưa tối ưu, không áp dụng được vùng dữ liệu khác... nên cần phải hiệu chỉnh với mục đích cụ thể.

Cách thực hiện:
- Trên menu Developer, click nút Record Macro.
upload_2017-10-17_21-18-36.png

- Cửa sổ Record Macro hiện ra. Đặt tên cho macro, thiết lập phím tắt để chạy (Run) macro, thiết lập nơi hiệu lực của macro, miêu tả...
Rồi click OK.
upload_2017-10-17_21-18-44.png

- Khi đó chức năng Record Macro bắt đầu hoạt động, nhiệm vụ của bạn khi đó là thực hiện các thao tác cần ghi lại trên bảng tính Excel.
Sau khi thao tác xong, bạn click nút Stop Recording trên menu Developer để kết thúc việc ghi macro.
upload_2017-10-17_21-18-53.png

Ví dụ 1:
Tại Sheet1, ta nhập số thứ tự từ 1 tới 5 vào các ô [A2:A6])
- Để xem code mà macro vừa được ghi lại, bạn vào cửa sổ VBA (nhấn Alt+F11)
- Để gán macro vừa được ghi vào nút lệnh, ta chèn một shape hình chữ nhật rồi assign macro "Macro1" vào.
- Chạy thử Macro1: Xóa vùng dữ liệu ở [A2:A6] rồi click vào nút lệnh vừa tạo.
PHP:
Sub Macro1()
''
'' Macro1 Macro
'' Record Macro
''
'' Keyboard Shortcut: Ctrl+Shift+R
''
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("A4").Select
    ActiveCell.FormulaR1C1 = "3"
    Range("A5").Select
    ActiveCell.FormulaR1C1 = "4"
    Range("A6").Select
    ActiveCell.FormulaR1C1 = "5"
    Range("A7").Select
End Sub

Ví dụ 2:
Tại Sheet2, cho dữ liệu ở vùng A2:C20, điều kiện lọc theo Mã tại E2, sử dụng chức năng Advanced Filter để lọc kết quả và đặt kết quả lọc được tại H2:I2.
PHP:
Sub Macro2()
''
'' Macro2 Macro
''
    Range("B2:C20").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "E1:E2"), CopyToRange:=Range("H2:I2"), Unique:=False
End Sub
 

File đính kèm

  • Record Macro.xlsb
    18.4 KB · Đọc: 99
Code nho nhỏ cho bạn bài của bạn Tuan16
 

File đính kèm

  • Loc du lieu.xlsm
    474.7 KB · Đọc: 30
Upvote 0
Web KT
Back
Top Bottom