Cách chạy Macro trong Excel

Mặc dù chạy macro trong Excel không khó, nhưng có rất nhiều cách để chạy chúng. Một số cách nhằm giúp việc sử dụng macro dễ dàng hơn, trong khi những cách khác có thể thay đổi hoàn toàn cách người dùng tương tác với sổ làm việc của bạn. Trong bài viết này, chúng tôi sẽ đề cập đến một số cách rõ ràng để chạy các macro như điều khiển Nút và Danh sách Macro, và một số cách khó hiểu hơn như Trình soạn thảo VB và Sự kiện.

Đầu tiên: Đảm bảo Macro được bật

Các tính năng bảo mật của Excel sẽ tắt macro theo mặc định. Khi mở một sổ làm việc hỗ trợ macro, người dùng thường được nhắc nếu họ muốn bật macro.

Nếu bạn không thể chạy macro, hãy thử làm theo các hướng dẫn sau:

  • Lưu sổ làm việc
  • Đóng sổ làm việc, sau đó mở lại
  • Khi sổ làm việc tải, bạn sẽ thấy Cảnh báo an ninh nhắc nhở (hình bên dưới). Nhấp chuột Bật nội dung.

Chạy Macro từ Danh sách Macro

Danh sách các macro có thể được truy cập từ tab Chế độ xem. Để xem danh sách này:

  • Chọn Quan điểm chuyển hướng
  • Nhấp vào nút có nhãn Macro để hiển thị danh sách Macro

  • Chọn macro bạn muốn chạy từ danh sách, sau đó nhấp vào Chạy cái nút

Bạn cũng có thể hiển thị Danh sách Macro bất kỳ lúc nào bằng cách nhấn ALT + F8.

Chạy Macro bằng phím tắt

Bạn có thể gán phím tắt cho macro mà bạn thường sử dụng, ở dạng CTRL + hoặc CTRL + SHIFT +. Để làm điều này:

  • Đưa ra Danh sách Macro (Quan điểm > Macrohoặc ALT + F8)
  • Chọn macro bạn muốn áp dụng lối tắt
  • Nhấp chuột Tùy chọn… để hiển thị Tùy chọn Macro hộp thoại phụ

  • Trong hộp văn bản dưới Phím tắt, nhập một chữ cái và sau đó nhấp vào VÂNG. Nếu bạn giữ phím SHIFT trong khi nhập chữ cái, nhãn bên cạnh hộp sẽ hiển thị SHIFT như một phần của phím tắt

GHI CHÚ: bạn nên sử dụng SHIFT khi tạo phím tắt! Excel sử dụng CTRL + phím tắt cho chính nó, ví dụ: CTRL + C để Sao chép hoặc CTRL + V để Lưu. Nếu bạn tạo lối tắt macro bằng các phím tắt này hoặc các phím tắt Excel khác, bạn sẽ ghi đè phím tắt Excel cho đến khi bạn gán lại phím tắt macro.

Chạy Macro từ VB Editor

Macro cũng có thể được chạy từ VB Editor. VB Editor cho phép bạn xem lại mã của macro và thực hiện bất kỳ thay đổi nào bạn muốn trước khi chạy nó.

Để chạy macro trong VB Editor:

  • Mở VB Editor (tab Nhà phát triển> Visual Basic hoặc ALT + F11)

  • bên trong Dự án cửa sổ, bấm đúp vào mô-đun có chứa macro bạn muốn kiểm tra
  • Trong cửa sổ mã của mô-đun, đặt con trỏ bất kỳ nơi nào trên mã của macro giữa “Sub” và “End Sub”
  • Nhấn vào Chạy trên thanh công cụ hoặc nhấn phím tắt F5

Chạy Macro bằng Nút hoặc Hình dạng

Thường hữu ích khi có một điều khiển trên trang tính mà người dùng có thể nhấp để chạy macro, như điều khiển Nút hoặc Hình dạng. Điều này nhanh hơn nhiều đối với người dùng cuối so với việc mở danh sách macro hoặc đào qua mã macro trong VB Editor.

Bạn có thể tìm thông tin về cách tạo Nút hoặc Hình dạng có thể nhấp tại đây: Thêm Nút và Gán Macro trong Excel.

Tự động chạy Macro bằng Sự kiện trong VBA

Có thể thực hiện macro chạy khi có điều gì đó xảy ra trong Excel - ví dụ: khi một sổ làm việc được mở hoặc khi giá trị ô bị thay đổi. Chúng được gọi là Sự kiệnvà bạn có thể viết mã VBA để chúng gọi macro hoặc thực hiện các thao tác khác.

Để viết mã cho một sự kiện, bạn sẽ cần sử dụng Trình soạn thảo VB. Ví dụ: để xem các sự kiện cho sổ làm việc:

  • Mở VB Editor (ALT + F11)
  • Bấm đúp vào ThisWorkbook đối tượng trong VB Editor’s Cửa sổ dự án
  • Chọn “Workbook” từ menu thả xuống ở phía trên bên trái của cửa sổ mã
  • Nhấp vào menu thả xuống ở bên phải để xem danh sách các sự kiện

Sau đây là một mẫu Sự kiện Excel nhỏ nhưng hữu ích mà bạn có thể chạy macro.

Workbook_Open ()

Sự kiện Workbook_Open () kích hoạt khi một sổ làm việc được mở. Nếu bạn nhận được Cảnh báo bảo mật sau khi mở sổ làm việc, sự kiện này sẽ kích hoạt sau khi nhấp vào “Bật nội dung”.

12345 Private Sub Workbook_Open ()MsgBox "Đã mở sổ làm việc!"Kết thúc Sub

Workbook_BeforeClose (Hủy dưới dạng Boolean)

Workbook_BeforeClose () kích hoạt khi người dùng cố gắng đóng sổ làm việc. Nó xảy ra trước khi bất kỳ kiểm tra nào được thực hiện để xem sổ làm việc có cần được lưu hay không.

Các Hủy bỏ tham số có thể được đặt thành True để ngăn sổ làm việc đóng.

123456789 Private Sub Workbook_BeforeClose (Cancel As Boolean)If MsgBox ("Bạn có chắc chắn không?", VbYesNo + vbQuestion, "Close") = vbNo Sau đóHủy bỏ = ĐúngKết thúc nếuKết thúc Sub

Worksheet_Change (ByVal Target As Range)

Worksheet_Change () kích hoạt khi giá trị của một ô bị thay đổi - cho dù nó được thay đổi bởi macro, bởi thao tác sao chép / dán hay bởi một liên kết bên ngoài. Tuy nhiên, nó không kích hoạt khi một giá trị được tính toán lại thông qua một công thức.

Các Mục tiêu tham số đại diện cho các ô có giá trị đã thay đổi.

Nếu bạn thay đổi giá trị của các ô khác bên trong sự kiện này, sự kiện sẽ kích hoạt lại. Điều này có thể gây ra một vòng lặp vô hạn. Nếu bạn cần thay đổi giá trị ô mà không kích hoạt sự kiện này, hãy xem xét thiết lập Application.EnableEvents đến Sai đầu tiên, và sau đó đặt nó trở lại Thật khi kết thúc thủ tục sự kiện.

123456789 Private Sub Worksheet_Change (ByVal Target As Range)MsgBox "Các ô đã thay đổi:" & Target.AddressApplication.EnableEvents = SaiPhạm vi ("A2"). Giá trị = Phạm vi ("A2"). Giá trị + Mục tiêu.Cells.CountApplication.EnableEvents = TrueKết thúc Sub

Worksheet_SelectionChange (ByVal Target As Range)

Sự kiện này kích hoạt bất cứ khi nào các ô khác nhau được chọn với ô nhắm mục tiêu. Tham số Target đại diện cho các ô mới đã được chọn.

Bạn cũng có thể kích hoạt sự kiện này bằng mã, tức là “Phạm vi (“ A1 ”). Chọn”. Như với Worksheet_Change (), bạn nên cẩn thận khi chọn các ô khác bên trong sự kiện này, vì bạn có thể gây ra một vòng lặp vô hạn. Sử dụng Application.EnableEvents.

123456789 Private Sub Worksheet_SelectionChange (ByVal Target As Range)If Target.Address = "$ A $ 1" ThìMsgBox "Con trỏ ở vị trí chính."Kết thúc nếuKết thúc Sub

Dừng Macro đang chạy

Một macro đang chạy có thể bị gián đoạn bằng cách nhấn thoát hoặc CTRL + BREAK. Theo mặc định, một macro bị gián đoạn sẽ hiển thị hộp thoại sau:

Sự nhấp chuột Kết thúc sẽ dừng macro, trong khi Tiếp tục sẽ tiếp tục nó. Sự nhấp chuột Gỡ lỗi sẽ mở macro trong VB Editor và tập trung vào dòng mã mà quá trình thực thi đã bị tạm dừng. (Bên trong VB Editor, bạn có thể dừng hoặc tiếp tục macro bằng cách sử dụng các nút Chạy hoặc Kết thúc trên thanh công cụ.)

Application.EnableCancelKey

Bạn có thể tắt khả năng dừng macro bằng ESC hoặc CTRL + BREAK bằng cách đặt Application.EnableCancelKey bất động sản. Thuộc tính này có ba giá trị có thể có:

  • xlInterrupt - đây là giá trị mặc định, làm cho Excel hiển thị hộp thoại ở trên
  • xlDisabled - loại bỏ khả năng dừng một macro đang chạy
  • xlErrorHandler - khi một nỗ lực ngắt được thực hiện, một lỗi được đưa ra có thể được xử lý bằng mã

Bất cứ khi nào việc thực thi mã dừng lại, Excel luôn đặt lại giá trị của Application .EnableCancelKey trở lại xlInterrupt.

Một lý do chính đáng để sử dụng tài sản này là bảo mật. Ví dụ: nếu bạn có macro tạm thời không bảo vệ các phần trong sổ làm việc của mình, người dùng có thể dừng macro ngay sau khi bỏ bảo vệ và có quyền truy cập vào nội dung mà bạn không muốn họ có. Bằng cách đặt Application.EnableCancelKey, bạn có thể vô hiệu hóa hoàn toàn khả năng thực hiện việc này của họ hoặc xử lý sự gián đoạn của họ một cách khéo léo với Trình xử lý lỗi bảo vệ lại sổ làm việc.

1234567891011 Sub UpdateBaseData (ByVal NewData As Range, ByVal Target As Range)Application.EnableCancelKey = xlDisabledTarget.Worksheet.Unprotect "MyPassword"Mục tiêu sao chép dữ liệu mớiTarget.Worksheet.Protect "MyPassword"Application.EnableCancelKey = xlInterruptKết thúc Sub

Buộc đóng Excel bằng Trình quản lý tác vụ Windows

Nếu macro bị ‘treo’ hoặc Excel đã trở nên quá bận để xác nhận một nỗ lực gián đoạn, bạn có thể cần phải buộc đóng chính Excel bằng Trình quản lý tác vụ Windows. (LƯU Ý: nếu bạn làm điều này, bạn có thể mất mọi công việc chưa được lưu và phải dựa vào phiên bản tự động khôi phục của sổ làm việc của bạn.)

  • Mở trực tiếp Trình quản lý tác vụ bằng cách sử dụng CTRL + SHIFT + ESC
  • Chọn “Quy trình" chuyển hướng
  • Mở rộng mục “Microsoft Excel” để hiển thị tất cả các sổ làm việc
  • Chọn sổ làm việc bạn muốn đóng, sau đó bấm Kết thúc nhiệm vụ ở góc dưới bên phải

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave