Mở Excel và VBE (Visual Basic Editor). Trừ khi nó đã được thay đổi, cửa sổ VBE chứa cửa sổ ProjectExplorer và cửa sổ Properties (những thứ này có thể được truy cập từ menu View).

Project Explorer: Hoạt động giống như một trình quản lý tệp. Giúp bạn điều hướng xung quanh mã trong sổ làm việc của mình.

Cửa sổ Thuộc tính: Hiển thị các thuộc tính của đối tượng hiện đang hoạt động (ví dụ: Sheet1) của sổ làm việc hiện tại (ví dụ :_Book1_).

Trong bài viết này, chúng ta sẽ tìm hiểu cách ghi macro dễ dàng trong Excel.

Bài tập 1: Ghi Macro.

Bài tập này cho thấy điều gì sẽ xảy ra khi ghi macro và thể hiện sự khác biệt giữa việc ghi tham chiếu tuyệt đối và tương đối.

  1. Trên trang tính trống trong sổ làm việc mới, hãy chọn ô C10 2. Khởi động Trình ghi Macro với tùy chọn để lưu macro trong _ Sổ làm việc này_. Tại thời điểm này, VBE tạo một thư mục Modules mới. Khá an toàn để đi và xem xét nó – hành động của bạn sẽ không bị ghi lại. Nhấp vào [+] bên cạnh thư mục và thấy rằng VBE đã đặt một mô-đun trong thư mục và đặt tên là Module1. Bấm đúp vào biểu tượng mô-đun để mở cửa sổ mã của nó. Chuyển về Excel.

  2. Đảm bảo rằng nút Tham chiếu Tương đối trên thanh công cụ Stop Recording KHÔNG được nhấn.

  3. Chọn ô B5 và dừng đầu ghi.

  4. Chuyển sang VBE và xem mã:

Phạm vi (“B5”). Chọn 6. Bây giờ ghi lại một macro khác, giống hệt như cách, nhưng lần này với nút Tham chiếu tương đối được nhấn trong.

  1. Chuyển sang VBE và xem mã:

ActiveCell.Offset (-5, -1) .Range (“A1”). Chọn 8. Bây giờ ghi lại một macro khác, nhưng thay vì chọn ô B5, hãy chọn một khối ô 3×3 bắt đầu từ B5 (chọn ô B5: F7)

  1. Chuyển sang VBE và xem mã:

ActiveCell.Offset (-5, -1) .Range (“A1: B3”). Chọn 10. Phát lại các macro, trước tiên đã chọn một ô khác với C10 (đối với Macro2 và Macro3, ô bắt đầu phải ở hàng 6 hoặc dưới đây – xem bước 11 bên dưới)

Macro1 – luôn di chuyển vùng chọn đến B5 Macro2 – di chuyển vùng chọn đến một ô 5 hàng lên và 1 cột bên trái ô được chọn.

Macro3 – luôn chọn một khối gồm sáu ô bắt đầu từ 5 hàng lên và 1 cột ở bên trái của ô đã chọn.

  1. Chạy Macro2 nhưng bắt lỗi bằng cách chọn một ô ở hàng 5 trở lên. Macro cố gắng chọn một ô không tồn tại vì mã của nó yêu cầu nó chọn một ô 5 hàng phía trên điểm bắt đầu và ô đó nằm ngoài đầu trang tính. Nhấn Gỡ lỗi để được đưa đến phần của macro đã gây ra sự cố.

LƯU Ý: Khi VBE ở chế độ Gỡ lỗi, dòng mã gây ra sự cố được đánh dấu màu vàng. Bạn phải “đặt lại” macro trước khi có thể tiếp tục. Nhấp vào nút Đặt lại trên thanh công cụ VBE hoặc đi tới Chạy> Đặt lại. Phần đánh dấu màu vàng biến mất và VBE thoát khỏi chế độ Gỡ lỗi.

  1. Điều quan trọng là phải thử và lường trước lỗi người dùng như thế này. Cách đơn giản nhất là sửa đổi mã để đơn giản bỏ qua lỗi và chuyển sang tác vụ tiếp theo. Thực hiện việc này bằng cách thêm dòng… On Error Resume Tiếp theo… ngay trên dòng đầu tiên của macro (bên dưới dòng Sub Macro1 ()

  2. Chạy Macro2 như trước, bắt đầu quá cao trên trang tính. Lần này dòng bạn đã nhập yêu cầu Excel bỏ qua dòng mã mà nó không thể thực thi. Không có thông báo lỗi và macro thoát khi đã làm tất cả những gì có thể. Hãy sử dụng phương pháp xử lý lỗi này một cách thận trọng. Đây là một macro rất đơn giản. A macro phức tạp hơn có thể sẽ không hoạt động như mong đợi nếu các lỗi đơn giản được bỏ qua. Ngoài ra, người dùng không biết rằng có gì đó đã xảy ra.

  3. Sửa đổi mã của Macro2 để bao gồm một trình xử lý lỗi phức tạp hơn:

Sub Macro2 ()

Khi Lỗi GoTo ErrorHandler ActiveCell.Offset (-5, -1) .Range (“A1”). Chọn Thoát Sub ErrorHandler:

MsgBox “Bạn phải bắt đầu bên dưới Hàng 5 “

End Sub 15. Lần này người dùng được hiển thị hộp thoại khi có sự cố. Nếu không có lỗi dòng ExitSub khiến macro kết thúc sau khi nó hoàn thành công việc – nếu không người dùng sẽ thấy thông báo ngay cả khi không có lỗi.

Cải thiện Macro đã Ghi Cách tốt để học những điều cơ bản về VBA là ghi lại macro và xem cách Excel viết mã của chính nó. Tuy nhiên, thông thường, các macro được ghi lại chứa nhiều mã hơn mức cần thiết. Các bài tập sau đây trình bày cách bạn có thể cải thiện và sắp xếp hợp lý mã đã được tạo bởi macro được ghi lại.

Bài tập 2: Cải thiện Macro được Ghi _ Bài tập này cho thấy rằng khi các macro được ghi lại, thường có nhiều mã được tạo hơn mức cần thiết. Nó thể hiện việc sử dụng câu lệnh With để trang trí mã ._

  1. Chọn ô hoặc khối ô bất kỳ.

  2. Khởi động trình ghi macro và gọi macro FormatCells. Cài đặt Tham chiếu tương đối sẽ không có liên quan.

  3. Vào Format> Cells> Font và chọn Times New RomanRed.

Đi tới Mẫu và chọn Yellow.

Đi tới Căn chỉnh và chọn _ Ngang, Căn giữa_ Đi tới Số và chọn _ Tiền tệ_.

  1. Nhấp vào OK và dừng đầu ghi.

  2. Nhấp vào nút Hoàn tác (hoặc Ctrl + Z) để hoàn tác các thay đổi của bạn đối với trang tính.

  3. Chọn một khối ô và chạy macro FormatCells. Lưu ý rằng nó không thể được hoàn tác! Nhập vào các ô để kiểm tra kết quả của định dạng.

  4. Nhìn vào mã:

Định dạng phụSelection ()

Selection.NumberFormat = “$ , # 0.00″

Với lựa chọn .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .ShrinkToFit = False .MergeCells = False End With Selection.Font .Name = “Times New Roman”

Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3 End With Selection.Interior .ColorIndomex = 6 .Pattern = xlSolid .PatternColorAutn = xlSolid. End With End Sub 8. Lưu ý tất cả các hướng dẫn bổ sung đã được ghi lại. Xóa các dòng mã để chỉ còn lại phần sau:

Định dạng phụSelection ()

Selection.NumberFormat = “$ , # 0.00″

Với lựa chọn .HorizontalAlignment = xlCenter End With Selection.Font .Name = “Times New Roman”

ColorIndex = 3 End With Selection.Interior .ColorIndex = 6 End With End Sub 9. Chạy macro để kiểm tra mã đã chỉnh sửa. Nó vẫn hoạt động như trước.
  1. Bây giờ sửa đổi mã hơn nữa:

Định dạng phụSelection ()

Với lựa chọn .NumberFormat = “$ , # 0.00″

Font.ColorIndex = 3 .Interior.ColorIndex = 6 End With End Sub 11. Kiểm tra macro. Mọi thứ vẫn hoạt động và mã sẽ chạy nhanh hơn nhiều.
  1. Hãy thử ghi lại cùng một macro bằng cách sử dụng các nút trên thanh công cụ thay vì đi tới hộp thoại:

Thay đổi phông chữ thành Times New Roman Thay đổi màu phông chữ thành Red Thay đổi màu tô thành Yellow Nhấp vào nút Center Nhấp vào nút Currency 13. Nhìn vào mã. Bạn vẫn nhận được nhiều thứ mà bạn không nhất thiết phải muốn. Excel đang ghi lại tất cả cài đặt default. Hầu hết chúng đều an toàn để xóa.

  1. Thử nghiệm với việc chỉnh sửa trực tiếp vào mã để thay đổi màu sắc, phông chữ, định dạng số, v.v.

Bài tập 3: Xem macro đang được ghi Bài tập này cho thấy rằng bạn có thể học bằng cách xem bản dựng macro khi nó đang được ghi. Đây cũng là một ví dụ về việc đôi khi câu lệnh With không thích hợp .

  1. Mở tệp VBA01.xls.

Mặc dù bảng tính này hiển thị OK và người dùng có thể hiểu được, nhưng sự hiện diện của các ô trống có thể gây ra sự cố. Hãy thử lọc dữ liệu và xem điều gì sẽ xảy ra. Đi tới Dữ liệu> Bộ lọc> Bộ lọc tự động và lọc theo Khu vực hoặc Tháng. Rõ ràng là Excel không đưa ra các giả định giống như người dùng. Các ô trống cần được lấp đầy.

  1. Xếp cửa sổ Excel và VBE (theo chiều dọc) để chúng nằm cạnh nhau.

  2. Chọn bất kỳ ô nào trong dữ liệu. Nếu nó là một ô trống, nó phải liền kề với một ô chứa dữ liệu.

  3. Khởi động trình ghi macro và gọi macro FillEmptyCells.

Đặt để ghi lại Tham chiếu tương đối.

  1. Trong cửa sổ VBE tìm và nhấp đúp vào mô-đun (Module1)

để sổ làm việc hiện tại mở ngăn chỉnh sửa, sau đó tắt cửa sổ Project Explorer và cửa sổ Thuộc tính (chỉ để tạo khoảng trống).

  1. Ghi lại macro mới như sau:

Bước 1. Ctrl + * (để chọn vùng hiện tại)

Bước 2. Edit> Go To> Special> Blanks> OK (để chọn tất cả các ô trống trong vùng hiện tại)

Bước 3. Gõ = [UpArrow] rồi nhấn Ctrl + Enter (để gõ vào tất cả các ô đã chọn)

Bước 4. Ctrl + * (để chọn lại vùng hiện tại)

Bước 5. Ctrl + C (để sao chép lựa chọn – bất kỳ phương pháp nào cũng được)

Bước 6. Chỉnh sửa> Dán Đặc biệt> Giá trị> OK (để dán dữ liệu trở lại vị trí cũ nhưng loại bỏ các công thức)

Bước 7. Esc (thoát khỏi Chế độ sao chép)

Bước 8. Dừng ghi.

  1. Nhìn vào mã:

Sub FillEmptyCells ()

Selection.CurrentRegion.Select Selection.SpecialCells (xlCellTypeBlanks) .Select Selection.FormulaR1C1 = “= R [-1] C”

Selection.CurrentRegion.Select Selection.Copy Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _ False, Transpose: = False Application.CutCopyMode = False End Sub 8. Lưu ý việc sử dụng dấu cách và dấu gạch dưới “_” Để biểu thị sự tách một dòng mã thành một dòng mới. Nếu không có điều này, Excel sẽ coi mã như hai câu lệnh riêng biệt.

  1. Bởi vì macro này đã được ghi lại với các lệnh được suy nghĩ kỹ lưỡng, nên có rất ít mã không cần thiết. Trong Paste Special, mọi thứ sau từ “xlValues” đều có thể bị xóa.

  2. Hãy thử macro. Sau đó, sử dụng công cụ AutoFilter và lưu ý sự khác biệt.