Bạn có thể khiến Excel tự động chạy một thủ tục bất cứ khi nào một sổ làm việc cụ thể được mở. Ví dụ: khi sổ làm việc được mở, bạn có thể muốn chạy một thủ tục hỏi người dùng xem họ có muốn thực hiện một số tác vụ hay không, chẳng hạn như lưu dữ liệu của ngày hôm trước vào một tệp khác.

Để chạy một thủ tục tự động khi một sổ làm việc được mở, tất cả những gì bạn cần làm là đặt tên cho thủ tục là Auto_Open (). Do đó, thủ tục sau sẽ được chạy tự động bất cứ khi nào sổ làm việc chứa nó được mở:

Sub Auto_Open()

Dim strMsg As String     Dim intBoxType As Integer     Dim strTitle As String     Dim intUpdate As Integer     Dim strDefault As String     Dim strOldFile As String     Dim intStatusState As Integer

strMsg = "Do you want to save yesterday's transactions?"

intBoxType = vbYesNo + vbQuestion     strTitle = "Automatic Backup Routine"

intUpdate = MsgBox(Msg, BoxType, Title)

If intUpdate = vbYes Then         strMsg = "Which filename would you like use?"

strDefault = "OLD.DAT"

strOldFile = InputBox(strMsg, strTitle, strDefault)

intStatusState = Application.DisplayStatusBar         Application.DisplayStatusBar = True         Application.StatusBar = "Updating past months..."

UpdateYesterday         Application.StatusBar = False         Application.DisplayStatusBar = intStatusState     End If End Sub

(Hãy nhớ rằng thủ tục này là một ví dụ; nó sẽ không chạy đúng trên hệ thống của bạn vì nó gọi một hàm có tên là UpdateY hôm qua, hàm này thực hiện cập nhật thực tế.)

Macro này tự động chạy bất cứ khi nào mở sổ làm việc mà nó được đính kèm. Bạn cũng có thể sửa đổi mã và đặt nó trong đối tượng ThisWorkbook chỉ bằng cách thay đổi dòng đầu tiên thành:

Private Sub Workbook_Open()

Nhiều người coi việc sử dụng Auto_Open là “cách cũ” của loại macro này và Workbook_Open là “cách mới”. Theo một nghĩa nào đó là đúng; Phương thức Workbook_Open là một cách tiếp cận hướng đối tượng cho loại macro này hơn là Auto_Open. Tuy nhiên, trong thực tế, có rất ít sự khác biệt giữa hai điều này.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (2289) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: