Hướng dẫn microsoft visual basic for applications excel - microsoft visual basic cho ứng dụng excel

Bỏ qua nội dung chính

Trình duyệt này không còn được hỗ trợ.

Nâng cấp lên Microsoft Edge để tận dụng các tính năng mới nhất, cập nhật bảo mật và hỗ trợ kỹ thuật.

Bắt đầu với VBA trong văn phòng

  • Bài báo
  • 06/08/2022
  • 25 phút để đọc

Trong bài viết này

Bạn đang phải đối mặt với việc làm sạch lặp đi lặp lại năm mươi bảng trong từ? Bạn có muốn một tài liệu cụ thể để nhắc người dùng đầu vào khi mở không? Bạn có gặp khó khăn trong việc tìm ra cách đưa danh bạ của mình từ Microsoft Outlook vào bảng tính Microsoft Excel một cách hiệu quả không?

Bạn có thể thực hiện các tác vụ này và hoàn thành nhiều hơn bằng cách sử dụng Visual Basic cho các ứng dụng (VBA) cho Office, một ngôn ngữ lập trình đơn giản nhưng mạnh mẽ mà bạn có thể sử dụng để mở rộng các ứng dụng Office.

Bài viết này dành cho những người dùng văn phòng có kinh nghiệm, những người muốn tìm hiểu về VBA và những người muốn một số hiểu biết về cách lập trình có thể giúp họ tùy chỉnh Office.

Bộ Ứng dụng Office có một bộ tính năng phong phú. Có nhiều cách khác nhau để tác giả, định dạng và thao túng các tài liệu, email, cơ sở dữ liệu, biểu mẫu, bảng tính và thuyết trình. Sức mạnh lớn của lập trình VBA trong văn phòng là gần như mọi hoạt động mà bạn có thể thực hiện với chuột, bàn phím hoặc hộp thoại cũng có thể được thực hiện bằng cách sử dụng VBA. Hơn nữa, nếu nó có thể được thực hiện một lần với VBA, nó có thể được thực hiện dễ dàng như một trăm lần. (Trên thực tế, việc tự động hóa các tác vụ lặp đi lặp lại là một trong những cách sử dụng phổ biến nhất của VBA trong văn phòng.)

Ngoài sức mạnh của kịch bản VBA để tăng tốc các tác vụ mỗi ngày, bạn có thể sử dụng VBA để thêm chức năng mới vào các ứng dụng Office hoặc nhắc nhở và tương tác với người dùng tài liệu của bạn theo cách cụ thể cho nhu cầu kinh doanh của bạn. Ví dụ: bạn có thể viết một số mã VBA hiển thị thông báo bật lên để nhắc nhở người dùng lưu tài liệu vào một ổ đĩa mạng cụ thể ngay lần đầu tiên họ cố gắng lưu nó.

Bài viết này khám phá một số lý do chính để tận dụng sức mạnh của lập trình VBA. Nó khám phá ngôn ngữ VBA và các công cụ vượt trội mà bạn có thể sử dụng để làm việc với các giải pháp của mình. Cuối cùng, nó bao gồm một số mẹo và cách để tránh một số thất vọng và sai lầm của chương trình phổ biến.

Ghi chú

Quan tâm đến việc phát triển các giải pháp mở rộng trải nghiệm văn phòng trên nhiều nền tảng? Kiểm tra mô hình bổ trợ văn phòng mới. Các tiện ích bổ sung văn phòng có một dấu chân nhỏ so với các tiện ích bổ sung và giải pháp VSTO, và bạn có thể xây dựng chúng bằng cách sử dụng hầu hết mọi công nghệ lập trình web, chẳng hạn như HTML5, JavaScript, CSS3 và XML.

Khi nào nên sử dụng VBA và tại sao

Có một số lý do chính để xem xét lập trình VBA tại văn phòng.

Tự động hóa và lặp lại

VBA có hiệu quả và hiệu quả khi nói đến các giải pháp lặp đi lặp lại để định dạng hoặc điều chỉnh các vấn đề. Ví dụ: bạn đã bao giờ thay đổi phong cách của đoạn văn ở đầu mỗi trang trong Word chưa? Bạn đã bao giờ phải định dạng lại nhiều bảng được dán từ Excel vào một tài liệu từ hoặc một email Outlook? Bạn đã bao giờ phải thực hiện thay đổi tương tự trong nhiều liên hệ Outlook chưa?

Nếu bạn có một sự thay đổi mà bạn phải thực hiện hơn mười hoặc hai mươi lần, có thể đáng để tự động hóa nó với VBA. Nếu đó là một sự thay đổi mà bạn phải làm hàng trăm lần, thì chắc chắn nó đáng để xem xét. Hầu như mọi thay đổi định dạng hoặc chỉnh sửa mà bạn có thể làm bằng tay, có thể được thực hiện trong VBA.

Tiện ích mở rộng cho tương tác người dùng

Có những lúc bạn muốn khuyến khích hoặc buộc người dùng tương tác với ứng dụng Office hoặc tài liệu theo một cách cụ thể không phải là một phần của ứng dụng tiêu chuẩn. Ví dụ: bạn có thể muốn nhắc người dùng thực hiện một số hành động cụ thể khi họ mở, lưu hoặc in tài liệu.

Tương tác giữa các ứng dụng văn phòng

Bạn có cần sao chép tất cả các liên hệ của bạn từ Outlook sang Word và sau đó định dạng chúng theo một cách cụ thể nào đó không? Hoặc, bạn có cần chuyển dữ liệu từ Excel sang một bộ slide PowerPoint không? Đôi khi bản sao đơn giản và dán không làm những gì bạn muốn nó làm, hoặc nó quá chậm. Sử dụng lập trình VBA để tương tác với các chi tiết của hai hoặc nhiều ứng dụng Office cùng một lúc và sau đó sửa đổi nội dung trong một ứng dụng dựa trên nội dung trong một ứng dụng khác.

Làm mọi thứ theo cách khác

Lập trình VBA là một giải pháp mạnh mẽ, nhưng nó không phải lúc nào cũng là cách tiếp cận tối ưu. Đôi khi nó có ý nghĩa khi sử dụng các cách khác để đạt được mục tiêu của bạn.

Câu hỏi quan trọng cần đặt ra là liệu có một cách dễ dàng hơn. Trước khi bạn bắt đầu một dự án VBA, hãy xem xét các công cụ tích hợp và chức năng tiêu chuẩn. Ví dụ: nếu bạn có tác vụ chỉnh sửa hoặc bố cục tốn thời gian, hãy xem xét sử dụng các khóa hoặc khóa gia tốc để giải quyết vấn đề. Bạn có thể thực hiện nhiệm vụ một lần và sau đó sử dụng Ctrl+Y (làm lại) để lặp lại không? Bạn có thể tạo một tài liệu mới với định dạng hoặc mẫu chính xác, sau đó sao chép nội dung vào tài liệu mới đó không?

Các ứng dụng văn phòng rất mạnh mẽ; Giải pháp mà bạn cần có thể đã ở đó. Dành thời gian để tìm hiểu thêm về văn phòng trước khi bạn nhảy vào lập trình.

Trước khi bạn bắt đầu một dự án VBA, hãy đảm bảo rằng bạn có thời gian để làm việc với VBA. Lập trình đòi hỏi phải tập trung và có thể không thể đoán trước. Đặc biệt là một người mới bắt đầu, không bao giờ chuyển sang lập trình trừ khi bạn có thời gian để làm việc cẩn thận. Cố gắng viết một "kịch bản nhanh" để giải quyết vấn đề khi thời hạn xuất hiện có thể dẫn đến một tình huống rất căng thẳng. Nếu bạn đang vội, bạn có thể muốn sử dụng các phương pháp thông thường, ngay cả khi chúng đơn điệu và lặp đi lặp lại.

Lập trình VBA 101

Sử dụng mã để làm cho các ứng dụng làm mọi thứ

Bạn có thể nghĩ rằng viết mã là bí ẩn hoặc khó khăn, nhưng các nguyên tắc cơ bản sử dụng lý luận hàng ngày và khá dễ tiếp cận. Các ứng dụng Microsoft Office được tạo theo cách mà chúng phơi bày những thứ gọi là các đối tượng có thể nhận được hướng dẫn, giống như cách mà điện thoại được thiết kế với các nút mà bạn sử dụng để tương tác với điện thoại. Khi bạn nhấn nút, điện thoại nhận ra lệnh và bao gồm số tương ứng trong chuỗi mà bạn đang quay số. Trong lập trình, bạn tương tác với ứng dụng bằng cách gửi hướng dẫn đến các đối tượng khác nhau trong ứng dụng. Những đối tượng này là mở rộng, nhưng chúng có giới hạn của chúng. Họ chỉ có thể làm những gì họ được thiết kế để làm, và họ sẽ chỉ làm những gì bạn hướng dẫn họ làm.

Ví dụ: xem xét người dùng mở tài liệu trong Word, thực hiện một vài thay đổi, lưu tài liệu và sau đó đóng nó. Trong thế giới của lập trình VBA, Word phơi bày một đối tượng tài liệu. Bằng cách sử dụng mã VBA, bạn có thể hướng dẫn đối tượng tài liệu thực hiện những việc như mở, lưu hoặc đóng.

Phần sau đây thảo luận về cách tổ chức và mô tả các đối tượng.

Mô hình đối tượng

Các nhà phát triển tổ chức các đối tượng lập trình trong một hệ thống phân cấp và hệ thống phân cấp đó được gọi là mô hình đối tượng của ứng dụng. Word, ví dụ, có một đối tượng ứng dụng cấp cao nhất chứa một đối tượng tài liệu. Đối tượng tài liệu chứa các đối tượng đoạn văn và như vậy. Các mô hình đối tượng đại khái phản ánh những gì bạn thấy trong giao diện người dùng. Chúng là một bản đồ khái niệm của ứng dụng và khả năng của nó.

Định nghĩa của một đối tượng được gọi là một lớp, vì vậy bạn có thể thấy hai thuật ngữ này được sử dụng thay thế cho nhau. Về mặt kỹ thuật, một lớp là mô tả hoặc mẫu được sử dụng để tạo hoặc khởi tạo một đối tượng.

Khi một đối tượng tồn tại, bạn có thể thao tác nó bằng cách đặt các thuộc tính của nó và gọi các phương thức của nó. Nếu bạn nghĩ về đối tượng như một danh từ, các thuộc tính là các tính từ mô tả danh từ và các phương thức là các động từ làm động danh từ. Thay đổi một tài sản thay đổi một số chất lượng ngoại hình hoặc hành vi của đối tượng. Gọi một trong các phương thức đối tượng khiến đối tượng thực hiện một số hành động.

Mã VBA trong bài viết này chạy chống lại một ứng dụng Office Office trong đó nhiều đối tượng mà mã thao túng đã được phát hành và chạy; Ví dụ: chính ứng dụng, bảng tính trong Excel, tài liệu trong Word, bản trình bày trong PowerPoint, Explorer và các đối tượng thư mục trong Outlook. Khi bạn biết bố cục cơ bản của mô hình đối tượng và một số thuộc tính chính của ứng dụng cho phép truy cập vào trạng thái hiện tại của nó, bạn có thể bắt đầu mở rộng và thao tác ứng dụng Office đó với VBA trong văn phòng.

Phương pháp

Ví dụ, trong Word, bạn có thể thay đổi các thuộc tính và gọi các phương thức của tài liệu Word hiện tại bằng cách sử dụng thuộc tính ActiveSocument của đối tượng ứng dụng. Thuộc tính ActiveSocument này trả về một tham chiếu đến đối tượng tài liệu hiện đang hoạt động trong ứng dụng Word. "Trả về một tham chiếu đến" có nghĩa là "cho phép bạn truy cập."ActiveDocument property of the Application object. This ActiveDocument property returns a reference to the Document object that is currently active in the Word application. "Returns a reference to" means "gives you access to."

Mã sau đây thực hiện chính xác những gì nó nói; Đó là, nó lưu tài liệu hoạt động trong ứng dụng.

Application.ActiveDocument.Save

Đọc mã từ trái sang phải, "Trong ứng dụng này, với tài liệu được tham chiếu bởi ActiveDocument, gọi phương thức lưu." Xin lưu ý rằng lưu là hình thức đơn giản nhất của phương pháp; Nó không yêu cầu bất kỳ hướng dẫn chi tiết từ bạn. Bạn hướng dẫn một đối tượng tài liệu để lưu và nó không yêu cầu thêm bất kỳ đầu vào nào từ bạn.Save method." Be aware that Save is the simplest form of method; it does not require any detailed instructions from you. You instruct a Document object to Save and it does not require any more input from you.

Nếu một phương thức yêu cầu thêm thông tin, những chi tiết đó được gọi là tham số. Mã sau đây chạy phương thức Saveas, yêu cầu một tên mới cho tệp.SaveAs method, which requires a new name for the file.

Application.ActiveDocument.SaveAs ("New Document Name.docx")

Các giá trị được liệt kê trong ngoặc đơn sau một tên phương thức là các tham số. Ở đây, tên mới cho tệp là một tham số cho phương thức Saveas.SaveAs method.

Đặc tính

Bạn sử dụng cùng một cú pháp để đặt một thuộc tính mà bạn sử dụng để đọc một thuộc tính. Mã sau thực thi một phương thức để chọn ô A1 trong Excel và sau đó đặt thuộc tính để đặt một cái gì đó vào ô đó.

    Application.ActiveSheet.Range("A1").Select
    Application.Selection.Value = "Hello World"

Thử thách đầu tiên trong lập trình VBA là có cảm giác về mô hình đối tượng của mỗi ứng dụng văn phòng và đọc đối tượng, phương thức và cú pháp thuộc tính. Các mô hình đối tượng tương tự nhau trong tất cả các ứng dụng văn phòng, nhưng mỗi mô hình cụ thể cho loại tài liệu và đối tượng mà nó thao tác.

Trong dòng đầu tiên của đoạn mã, có đối tượng ứng dụng, Excel lần này, và sau đó là ActiveSheet, cung cấp quyền truy cập vào bảng tính hoạt động. Sau đó là một thuật ngữ không quen thuộc, phạm vi, có nghĩa là "xác định một loạt các ô theo cách này". Mã hướng dẫn phạm vi để tự tạo chỉ bằng A1 dưới dạng tập hợp các ô được xác định. Nói cách khác, dòng mã đầu tiên xác định một đối tượng, phạm vi và chạy một phương thức chống lại nó để chọn nó. Kết quả được tự động lưu trữ trong một thuộc tính khác của ứng dụng được gọi là lựa chọn.Application object, Excel this time, and then the ActiveSheet, which provides access to the active worksheet. After that is a term not as familiar, Range, which means "define a range of cells in this way." The code instructs Range to create itself with just A1 as its defined set of cells. In other words, the first line of code defines an object, the Range, and runs a method against it to select it. The result is automatically stored in another property of the Application called Selection.

Dòng mã thứ hai đặt thuộc tính giá trị của lựa chọn vào văn bản "Hello World" và giá trị đó xuất hiện trong ô A1.Value property of Selection to the text "Hello World", and that value appears in cell A1.

Mã VBA đơn giản nhất mà bạn viết có thể chỉ cần truy cập vào các đối tượng trong ứng dụng Office mà bạn đang làm việc và đặt các thuộc tính. Ví dụ: bạn có thể có quyền truy cập vào các hàng trong một bảng trong Word và thay đổi định dạng của chúng trong tập lệnh VBA của bạn.

Nghe có vẻ đơn giản, nhưng nó có thể cực kỳ hữu ích; Khi bạn có thể viết mã đó, bạn có thể khai thác tất cả sức mạnh của lập trình để thực hiện những thay đổi tương tự trong một số bảng hoặc tài liệu hoặc tạo chúng theo một số logic hoặc điều kiện. Đối với một máy tính, việc thực hiện 1000 thay đổi không khác với 10, do đó, có một nền kinh tế quy mô ở đây với các tài liệu và vấn đề lớn hơn, và đó là nơi VBA thực sự có thể tỏa sáng và giúp bạn có thời gian.

Macro và trình soạn thảo Visual Basic

Bây giờ bạn đã biết điều gì đó về cách các ứng dụng Office hiển thị các mô hình đối tượng của họ, có lẽ bạn rất háo hức để thử gọi các phương thức đối tượng, thiết lập các thuộc tính đối tượng và phản hồi các sự kiện đối tượng. Để làm như vậy, bạn phải viết mã của bạn ở một nơi và theo cách mà văn phòng có thể hiểu được; Thông thường, bằng cách sử dụng Trình chỉnh sửa Visual Basic. Mặc dù nó được cài đặt theo mặc định, nhiều người dùng không biết rằng nó thậm chí còn có sẵn cho đến khi nó được bật trên ruy băng.

Tất cả các ứng dụng văn phòng sử dụng ruy băng. Một tab trên Ribbon là tab Nhà phát triển, nơi bạn truy cập Trình soạn thảo Visual Basic và các công cụ phát triển khác. Vì Office không hiển thị tab Nhà phát triển theo mặc định, bạn phải bật nó bằng cách sử dụng quy trình sau:Developer tab, where you access the Visual Basic Editor and other developer tools. Because Office does not display the Developer tab by default, you must enable it by using the following procedure:

Để bật tab Nhà phát triển

  1. Trên tab Tệp, chọn Tùy chọn để mở hộp thoại Tùy chọn.File tab, choose Options to open the Options dialog box.

  2. Chọn Tùy chỉnh ruy băng ở phía bên trái của hộp thoại.Customize Ribbon on the left side of the dialog box.

  3. Trong Chọn các lệnh từ bên trái của hộp thoại, chọn các lệnh phổ biến.Choose commands from on the left side of the dialog box, select Popular Commands.

  4. Dưới tùy chỉnh ruy băng ở phía bên phải của hộp thoại, chọn các tab chính trong hộp danh sách thả xuống, sau đó chọn hộp kiểm của nhà phát triển.Customize the Ribbon on the right side of the dialog box, select Main Tabs in the drop down list box, and then select the Developer checkbox.

  5. Chọn OK.OK.

Ghi chú

Trong Office 2007, bạn đã hiển thị tab Nhà phát triển bằng cách chọn nút Office, chọn các tùy chọn và sau đó chọn tab Hiển thị trong hộp kiểm Ribbon trong danh mục phổ biến của hộp thoại Tùy chọn.Developer tab by choosing the Office button, choosing Options, and then selecting the Show Developer tab in Ribbon check box in the Popular category of the Options dialog box.

Sau khi bạn bật tab Nhà phát triển, thật dễ dàng để tìm các nút Visual Basic và Macros.Developer tab, it is easy to find the Visual Basic and Macros buttons.

Hình 1. Các nút trên tab Nhà phát triển

Hướng dẫn microsoft visual basic for applications excel - microsoft visual basic cho ứng dụng excel

Vấn đề an ninh

Để bảo vệ người dùng Office chống lại virus và mã macro nguy hiểm, bạn không thể lưu mã macro trong tài liệu văn phòng tiêu chuẩn sử dụng tiện ích mở rộng tệp tiêu chuẩn. Thay vào đó, bạn phải lưu mã trong một tệp có tiện ích mở rộng đặc biệt. Ví dụ: bạn không thể lưu macro trong một tài liệu từ tiêu chuẩn với phần mở rộng .docx; Thay vào đó, bạn phải sử dụng một tài liệu hỗ trợ macro từ đặc biệt với tiện ích mở rộng .docm.

Khi bạn mở tệp .docm, bảo mật Office vẫn có thể ngăn các macro trong tài liệu chạy, có hoặc không nói với bạn. Kiểm tra các cài đặt và tùy chọn trong Trung tâm ủy thác trên tất cả các ứng dụng Office. Cài đặt mặc định vô hiệu hóa macro khi chạy, nhưng cảnh báo bạn rằng các macro đã bị vô hiệu hóa và cung cấp cho bạn tùy chọn để bật lại cho tài liệu đó.

Bạn có thể chỉ định các thư mục cụ thể nơi các macro có thể chạy bằng cách tạo các vị trí đáng tin cậy, tài liệu đáng tin cậy hoặc các nhà xuất bản đáng tin cậy. Tùy chọn di động nhất là sử dụng các nhà xuất bản đáng tin cậy, hoạt động với các tài liệu đã ký kỹ thuật số mà bạn phân phối. Để biết thêm thông tin về cài đặt bảo mật trong một ứng dụng Office cụ thể, hãy mở hộp thoại Tùy chọn, chọn Trung tâm ủy thác và sau đó chọn Cài đặt Trung tâm ủy thác.Options dialog box, choose Trust Center, and then choose Trust Center Settings.

Ghi chú

Một số ứng dụng Office, như Outlook, lưu macro theo mặc định trong một mẫu chính trên máy tính cục bộ của bạn. Mặc dù chiến lược đó làm giảm các vấn đề bảo mật cục bộ trên máy tính của riêng bạn khi bạn chạy macro của riêng mình, nhưng nó đòi hỏi một chiến lược triển khai nếu bạn muốn phân phối macro của mình.

Ghi một macro

Khi bạn chọn nút Macro trên tab Nhà phát triển, nó sẽ mở hộp thoại Macros, cho phép bạn truy cập vào các chương trình con hoặc macro VBA mà bạn có thể truy cập từ một tài liệu hoặc ứng dụng cụ thể. Nút Visual Basic mở trình soạn thảo Visual Basic, nơi bạn tạo và chỉnh sửa mã VBA.Macro button on the Developer tab, it opens the Macros dialog box, which gives you access to VBA subroutines or macros that you can access from a particular document or application. The Visual Basic button opens the Visual Basic Editor, where you create and edit VBA code.

Một nút khác trên tab Nhà phát triển trong Word và Excel là nút Macro Record, tự động tạo mã VBA có thể tái tạo các hành động mà bạn thực hiện trong ứng dụng. Record Macro là một công cụ tuyệt vời mà bạn có thể sử dụng để tìm hiểu thêm về VBA. Đọc mã được tạo có thể cung cấp cho bạn cái nhìn sâu sắc về VBA và cung cấp một cầu nối ổn định giữa kiến ​​thức về văn phòng của bạn với tư cách là người dùng và kiến ​​thức của bạn với tư cách là một lập trình viên. Thông báo duy nhất là mã được tạo có thể gây nhầm lẫn vì trình soạn thảo macro phải đưa ra một số giả định về ý định của bạn và những giả định đó không nhất thiết phải chính xác.Developer tab in Word and Excel is the Record Macro button, which automatically generates VBA code that can reproduce the actions that you perform in the application. Record Macro is a terrific tool that you can use to learn more about VBA. Reading the generated code can give you insight into VBA and provide a stable bridge between your knowledge of Office as a user and your knowledge as a programmer. The only caveat is that the generated code can be confusing because the Macro editor must make some assumptions about your intentions, and those assumptions are not necessarily accurate.

Để ghi lại một macro

  1. Mở Excel đến một sổ làm việc mới và chọn tab Nhà phát triển trong Ribbon. Chọn Ghi Macro và chấp nhận tất cả các cài đặt mặc định trong hộp thoại Ghi Macro, bao gồm Macro1 làm tên của macro và sổ làm việc này là vị trí.Developer tab in the ribbon. Choose Record Macro and accept all of the default settings in the Record Macro dialog box, including Macro1 as the name of the macro and This Workbook as the location.

  2. Chọn OK để bắt đầu ghi macro. Lưu ý cách nút nút thay đổi để dừng ghi. Chọn nút đó ngay lập tức bạn hoàn thành các hành động mà bạn muốn ghi lại.OK to begin recording the macro. Note how the button text changes to Stop Recording. Choose that button the instant you complete the actions that you want to record.

  3. Chọn Cell B1 và ​​nhập chuỗi đầu tiên cổ điển của lập trình viên: Hello World. Dừng gõ và nhìn vào nút dừng ghi; Nó có màu xám vì Excel đang chờ bạn hoàn thành việc gõ giá trị trong ô.Stop Recording button; it is grayed out because Excel is waiting for you to finish typing the value in the cell.

  4. Chọn ô B2 để hoàn thành hành động trong ô B1, sau đó chọn dừng ghi.Stop Recording.

  5. Chọn macro trên tab Nhà phát triển, chọn Macro1 nếu không được chọn và sau đó chọn Chỉnh sửa để xem mã từ Macro1 trong Trình chỉnh sửa Visual Basic.Macros on the Developer tab, select Macro1 if it is not selected, and then choose Edit to view the code from Macro1 in the Visual Basic Editor.

Hình 2. Mã macro trong Trình chỉnh sửa Visual Basic

Hướng dẫn microsoft visual basic for applications excel - microsoft visual basic cho ứng dụng excel

Nhìn vào mã

Macro mà bạn tạo nên trông tương tự như mã sau.

Sub Macro1()
'
' Macro1 Macro
'
'
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Hello World"
    Range("B2").Select
End Sub

Hãy nhận biết những điểm tương đồng với đoạn mã trước đó đã chọn văn bản trong ô A1 và sự khác biệt. Trong mã này, ô B1 được chọn và sau đó chuỗi "Hello World" được áp dụng cho ô đã được thực hiện. Các trích dẫn xung quanh văn bản chỉ định một giá trị chuỗi trái ngược với giá trị số.

Hãy nhớ làm thế nào bạn chọn ô B2 để hiển thị lại nút ghi dừng lại? Hành động đó cũng hiển thị như một dòng mã là tốt. Máy ghi âm Macro ghi lại mọi tổ hợp phím.Stop Recording button again? That action shows up as a line of code as well. The macro recorder records every keystroke.

Các dòng mã bắt đầu bằng dấu nháy đơn và màu xanh lá cây được trình soạn thảo là các bình luận giải thích mã hoặc nhắc nhở bạn và các lập trình viên khác mục đích của mã. VBA bỏ qua bất kỳ dòng nào, hoặc một phần của một dòng, bắt đầu bằng một trích dẫn duy nhất. Viết nhận xét rõ ràng và phù hợp trong mã của bạn là một chủ đề quan trọng, nhưng cuộc thảo luận đó nằm ngoài phạm vi của bài viết này. Các tài liệu tham khảo tiếp theo cho mã này trong bài viết không bao gồm bốn dòng bình luận đó.

Khi máy ghi macro tạo mã, nó sử dụng một thuật toán phức tạp để xác định các phương thức và các thuộc tính mà bạn dự định. Nếu bạn không nhận ra một tài sản nhất định, có nhiều tài nguyên có sẵn để giúp bạn. Ví dụ, trong macro mà bạn đã ghi, mã ghi Macro đã tạo mã đề cập đến thuộc tính Formular1c1. Không chắc điều đó có nghĩa là gì?FormulaR1C1 property. Not sure what that means?

Ghi chú

Xin lưu ý rằng đối tượng ứng dụng được ngụ ý trong tất cả các macro VBA. Mã mà bạn ghi lại hoạt động với ứng dụng. ở đầu mỗi dòng.Application object is implied in all VBA macros. The code that you recorded works with Application. at the beginning of each line.

Sử dụng trợ giúp nhà phát triển

Chọn Formular1c1 trong macro được ghi lại và nhấn F1. Hệ thống trợ giúp chạy tìm kiếm nhanh, xác định rằng các đối tượng thích hợp nằm trong phần Nhà phát triển Excel của Trợ giúp Excel và liệt kê thuộc tính Formular1c1. Bạn có thể chọn liên kết để đọc thêm về thuộc tính, nhưng trước khi bạn làm, hãy lưu ý đến liên kết tham chiếu mô hình đối tượng Excel gần đáy cửa sổ. Chọn liên kết để xem danh sách dài các đối tượng mà Excel sử dụng trong mô hình đối tượng của nó để mô tả bảng tính và các thành phần của chúng.FormulaR1C1 in the recorded macro and press F1. The Help system runs a quick search, determines that the appropriate subjects are in the Excel Developer section of the Excel Help, and lists the FormulaR1C1 property. You can choose the link to read more about the property, but before you do, be aware of the Excel Object Model Reference link near the bottom of the window. Choose the link to view a long list of objects that Excel uses in its object model to describe the Worksheets and their components.

Chọn bất kỳ một trong số đó để xem các thuộc tính và phương thức áp dụng cho đối tượng cụ thể đó, cùng với các tham chiếu chéo đến các tùy chọn liên quan khác nhau. Nhiều mục trợ giúp cũng có các ví dụ mã ngắn gọn có thể giúp bạn. Ví dụ: bạn có thể theo các liên kết trong đối tượng Biên giới để xem cách đặt đường viền ở VBA.Borders object to see how to set a border in VBA.

Worksheets(1).Range("A1").Borders.LineStyle = xlDouble

Chỉnh sửa mã

Mã biên giới trông khác với macro được ghi lại. Một điều có thể gây nhầm lẫn với một mô hình đối tượng là có nhiều hơn một cách để giải quyết bất kỳ đối tượng nào, ô A1 trong ví dụ này.

Đôi khi cách tốt nhất để học lập trình là thực hiện các thay đổi nhỏ đối với một số mã làm việc và xem điều gì xảy ra. Thử ngay bây giờ. Mở macro1 trong trình soạn thảo Visual Basic và thay đổi mã thành phần sau.Macro1 in the Visual Basic Editor and change the code to the following.

Sub Macro1()
    Worksheets(1).Range("A1").Value = "Wow!"
    Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub

Mẹo

Sử dụng sao chép và dán càng nhiều càng tốt khi làm việc với mã để tránh gõ lỗi.

Bạn không cần lưu mã để dùng thử, vì vậy hãy quay lại tài liệu Excel, chọn macro trên tab Nhà phát triển, chọn Macro1 và sau đó chọn Chạy. Cell A1 bây giờ chứa văn bản WOW! và có một đường viền hai dòng xung quanh nó.Macros on the Developer tab, choose Macro1, and then choose Run. Cell A1 now contains the text Wow! and has a double-line border around it.

Hình 3. Kết quả của macro đầu tiên của bạn

Hướng dẫn microsoft visual basic for applications excel - microsoft visual basic cho ứng dụng excel

Bạn chỉ cần kết hợp ghi âm macro, đọc tài liệu mô hình đối tượng và lập trình đơn giản để tạo một chương trình VBA thực hiện một cái gì đó. Xin chúc mừng!

Đã không làm việc? Đọc về để gỡ lỗi các đề xuất trong VBA.

Mẹo và thủ thuật lập trình

Bắt đầu với các ví dụ

Cộng đồng VBA rất lớn; Một tìm kiếm trên web hầu như luôn có thể mang lại một ví dụ về mã VBA làm điều gì đó tương tự như những gì bạn muốn làm. Nếu bạn không thể tìm thấy một ví dụ tốt, hãy cố gắng chia nhiệm vụ thành các đơn vị nhỏ hơn và tìm kiếm trên từng đơn vị đó, hoặc cố gắng nghĩ về một vấn đề phổ biến hơn nhưng tương tự hơn. Bắt đầu với một ví dụ có thể giúp bạn tiết kiệm thời gian.

Điều đó không có nghĩa là mã miễn phí và được suy nghĩ tốt có trên web đang chờ bạn đi cùng. Trên thực tế, một số mã mà bạn tìm thấy có thể có lỗi hoặc sai lầm. Ý tưởng là các ví dụ bạn tìm thấy trực tuyến hoặc trong tài liệu VBA cho bạn một khởi đầu. Hãy nhớ rằng lập trình học tập đòi hỏi thời gian và suy nghĩ. Trước khi bạn vội vàng sử dụng một giải pháp khác để giải quyết vấn đề của bạn, hãy tự hỏi liệu VBA có phải là lựa chọn đúng đắn cho vấn đề này không.

Làm cho một vấn đề đơn giản hơn

Lập trình có thể trở nên phức tạp nhanh chóng. Điều quan trọng, đặc biệt là khi mới bắt đầu, bạn phá vỡ vấn đề xuống các đơn vị logic nhỏ nhất có thể, sau đó viết và kiểm tra từng mảnh trong sự cô lập. Nếu bạn có quá nhiều mã trước mặt và bạn bị nhầm lẫn hoặc nhầm lẫn, hãy dừng lại và đặt vấn đề sang một bên. Khi bạn quay lại vấn đề, hãy sao chép một phần nhỏ của vấn đề vào một mô -đun mới, giải quyết phần đó, làm cho mã hoạt động và kiểm tra nó để đảm bảo rằng nó hoạt động. Sau đó chuyển sang phần tiếp theo.

Lỗi và gỡ lỗi

Có hai loại lỗi lập trình chính: lỗi cú pháp, vi phạm các quy tắc ngữ pháp của ngôn ngữ lập trình và lỗi thời gian chạy, trông đúng về mặt cú pháp, nhưng không thành công khi VBA cố gắng thực thi mã.

Mặc dù chúng có thể bực bội khi sửa chữa, lỗi cú pháp rất dễ bắt; Trình chỉnh sửa Visual Basic Beeps và nhấp nháy với bạn nếu bạn nhập lỗi cú pháp vào mã của mình.

Ví dụ, các giá trị chuỗi phải được bao quanh bởi các trích dẫn kép trong VBA. Để tìm hiểu những gì xảy ra khi bạn sử dụng các trích dẫn đơn thay thế, hãy quay lại Trình soạn thảo Visual Basic và thay thế "WOW!" Chuỗi trong ví dụ mã với 'wow!' (Đó là, từ wow được đặt trong các trích dẫn đơn). Nếu bạn chọn dòng tiếp theo, trình soạn thảo Visual Basic phản ứng. Lỗi "Lỗi biên dịch: Dự kiến: Biểu thức" không hữu ích, nhưng dòng tạo lỗi chuyển sang màu đỏ để nói với bạn rằng bạn có lỗi cú pháp trong dòng đó và kết quả là chương trình này sẽ không chạy.

Chọn OK và thay đổi văn bản trở lại thành "Wow!".OK and change the text back to"Wow!".

Lỗi thời gian chạy khó bắt hơn vì cú pháp lập trình có vẻ chính xác, nhưng mã không thành công khi VBA cố gắng thực hiện nó.

Ví dụ: mở Trình soạn thảo Visual Basic và thay đổi tên thuộc tính giá trị thành valueX trong macro của bạn, cố tình giới thiệu lỗi thời gian chạy vì đối tượng phạm vi không có thuộc tính gọi là valueX. Quay trở lại tài liệu Excel, mở hộp thoại Macros và chạy lại macro1. Bạn sẽ thấy một hộp thông báo Visual Basic giải thích lỗi thời gian chạy với văn bản, "Đối tượng không hỗ trợ thuộc tính của phương thức này." Mặc dù văn bản đó là rõ ràng, hãy chọn gỡ lỗi để tìm hiểu thêm.Value property name to ValueX in your Macro, deliberately introducing a runtime error since the Range object does not have a property called ValueX. Go back to the Excel document, open the Macros dialog box and run Macro1 again. You should see a Visual Basic message box that explains the run-time error with the text, "Object doesn't support this property of method." Although that text is clear, choose Debug to find out more.

Khi bạn trở lại Trình soạn thảo Visual Basic, nó ở chế độ gỡ lỗi đặc biệt sử dụng điểm nổi bật màu vàng để hiển thị cho bạn dòng mã không thành công. Như mong đợi, dòng bao gồm thuộc tính valueX được tô sáng.

Bạn có thể thực hiện các thay đổi đối với mã VBA đang chạy, vì vậy hãy thay đổi ValueX trở lại giá trị và chọn nút Little Green Play bên dưới menu gỡ lỗi. Chương trình nên chạy bình thường một lần nữa.Value and choose the little green play button underneath the Debug menu. The program should run normally again.

Bạn nên học cách sử dụng trình gỡ lỗi có chủ ý hơn trong các chương trình dài hơn, phức tạp hơn. Tối thiểu, tìm hiểu cách đặt các điểm dừng để dừng thực thi tại một điểm mà bạn muốn xem mã, cách thêm đồng hồ để xem các giá trị của các biến và thuộc tính khác nhau khi mã chạy và cách chạy Bước qua dòng mã từng dòng. Các tùy chọn này đều có sẵn trong menu gỡ lỗi và người dùng trình gỡ lỗi nghiêm túc thường ghi nhớ các phím tắt bàn phím đi kèm.Debug menu and serious debugger users typically memorize the accompanying keyboard shortcuts.

Sử dụng tài liệu tham khảo tốt

Để mở tài liệu tham khảo của nhà phát triển được tích hợp vào trợ giúp văn phòng, hãy mở tài liệu tham khảo trợ giúp từ bất kỳ ứng dụng văn phòng nào bằng cách chọn dấu hỏi trong dải băng hoặc bằng cách nhấn F1. Sau đó, ở bên phải của nút tìm kiếm, chọn mũi tên thả xuống để lọc nội dung. Chọn tham chiếu nhà phát triển. Nếu bạn không thấy bảng nội dung trong bảng điều khiển bên trái, hãy chọn biểu tượng cuốn sách nhỏ để mở nó và sau đó mở rộng tham chiếu mô hình đối tượng từ đó.Search button, choose the dropdown arrow to filter the contents. Choose Developer Reference. If you don't see the table of contents in the left panel, choose the little book icon to open it, and then expand the Object Model Reference from there.

Hình 5. Lọc trên Trợ giúp nhà phát triển áp dụng cho tất cả các ứng dụng Office

Hướng dẫn microsoft visual basic for applications excel - microsoft visual basic cho ứng dụng excel

Thời gian dành cho việc duyệt các tham chiếu mô hình đối tượng được đền đáp. Sau khi bạn hiểu những điều cơ bản của cú pháp VBA và mô hình đối tượng cho ứng dụng Office mà bạn đang làm việc, bạn tiến từ dự đoán sang lập trình có phương pháp.

Tất nhiên, Trung tâm phát triển Microsoft Office là một cổng thông tin tuyệt vời cho các bài viết, mẹo và thông tin cộng đồng.

Tìm kiếm các diễn đàn và nhóm

Tất cả các lập trình viên đôi khi bị mắc kẹt, ngay cả sau khi đọc mọi bài viết tham khảo mà họ có thể tìm thấy và mất ngủ vào ban đêm để nghĩ về những cách khác nhau để giải quyết vấn đề. May mắn thay, Internet đã thúc đẩy một cộng đồng các nhà phát triển giúp đỡ nhau giải quyết các vấn đề lập trình.

Bất kỳ tìm kiếm nào trên web cho "Diễn đàn phát triển văn phòng" cho thấy một số nhóm thảo luận. Bạn có thể tìm kiếm trên "Phát triển văn phòng" hoặc mô tả về vấn đề của bạn để khám phá các diễn đàn, bài đăng trên blog và bài viết.

Nếu bạn đã làm mọi thứ có thể để giải quyết vấn đề, đừng ngại đăng câu hỏi của bạn lên diễn đàn nhà phát triển. Những diễn đàn này chào đón các bài đăng từ các lập trình viên mới hơn và nhiều nhà phát triển có kinh nghiệm vui mừng giúp đỡ.

Sau đây là một vài điểm nghi thức để theo dõi khi bạn đăng lên một diễn đàn nhà phát triển:

  • Trước khi bạn đăng, hãy xem trang web để biết Câu hỏi thường gặp hoặc để biết hướng dẫn mà các thành viên muốn bạn tuân theo. Đảm bảo rằng bạn đăng nội dung phù hợp với các hướng dẫn đó và trong phần chính xác của diễn đàn.

  • Bao gồm một mẫu mã rõ ràng và đầy đủ và xem xét chỉnh sửa mã của bạn để làm rõ nó cho người khác nếu đó là một phần của phần mã dài hơn.

  • Mô tả vấn đề của bạn rõ ràng và chính xác, và tóm tắt bất kỳ bước nào bạn đã thực hiện để giải quyết vấn đề. Dành thời gian để viết bài viết của bạn cũng như bạn có thể, đặc biệt là nếu bạn bối rối hoặc vội vàng. Trình bày tình huống theo cách sẽ có ý nghĩa với người đọc lần đầu tiên họ đọc tuyên bố vấn đề.

  • Hãy lịch sự và bày tỏ sự đánh giá cao của bạn.

Đi xa hơn với lập trình

Mặc dù bài viết này ngắn và chỉ làm trầy xước bề mặt của VBA và lập trình, nhưng hy vọng nó đủ để bạn bắt đầu.

Phần này thảo luận ngắn gọn về một vài chủ đề quan trọng.

Biến

Trong các ví dụ đơn giản trong bài viết này, bạn đã thao tác các đối tượng mà ứng dụng đã tạo. Bạn có thể muốn tạo các đối tượng của riêng mình để lưu trữ các giá trị hoặc tham chiếu đến các đối tượng khác để sử dụng tạm thời trong ứng dụng của bạn. Chúng được gọi là các biến.

Để sử dụng một biến trong VBA, phải cho VBA biết loại đối tượng nào là biến thể hiện bằng cách sử dụng câu lệnh DIM. Sau đó, bạn đặt giá trị của nó và sử dụng nó để đặt các biến hoặc thuộc tính khác.Dim statement. You then set its value and use it to set other variables or properties.

    Dim MyStringVariable As String
    MyStringVariable = "Wow!"
    Worksheets(1).Range("A1").Value = MyStringVariable

Phân nhánh và vòng lặp

Các chương trình đơn giản trong bài viết này thực hiện một dòng tại một thời điểm, từ trên xuống. Sức mạnh thực sự trong lập trình đến từ các tùy chọn mà bạn phải xác định dòng mã nào để thực thi, dựa trên một hoặc nhiều điều kiện mà bạn chỉ định. Bạn có thể mở rộng các khả năng đó hơn nữa khi bạn có thể lặp lại một hoạt động nhiều lần. Ví dụ: mã sau đây mở rộng macro1.

Sub Macro1()
    If Worksheets(1).Range("A1").Value = "Yes!" Then
        Dim i As Integer
        For i = 2 To 10
            Worksheets(1).Range("A" & i).Value = "OK! " & i
        Next i
    Else
        MsgBox "Put Yes! in cell A1"
    End If
End Sub

Nhập hoặc dán mã vào trình soạn thảo Visual Basic và sau đó chạy nó. Thực hiện theo các hướng dẫn trong hộp thông báo xuất hiện và thay đổi văn bản trong ô A1 từ WOW! đến có! và chạy nó một lần nữa để thấy sức mạnh của vòng lặp. Đoạn mã này thể hiện các biến, phân nhánh và lặp. Đọc kỹ sau khi bạn thấy nó hoạt động và cố gắng xác định điều gì xảy ra khi mỗi dòng thực thi.

Tất cả các ứng dụng văn phòng của tôi: Mã ví dụ

Dưới đây là một vài kịch bản để thử; Mỗi người giải quyết một vấn đề văn phòng trong thế giới thực.

Tạo một email trong Outlook

Sub MakeMessage()
    Dim OutlookMessage As Outlook.MailItem
    Set OutlookMessage = Application.CreateItem(olMailItem)
    OutlookMessage.Subject = "Hello World!"
    OutlookMessage.Display
    Set OutlookMessage = Nothing
End Sub

Xin lưu ý rằng có những tình huống mà bạn có thể muốn tự động hóa email trong Outlook; Bạn cũng có thể sử dụng các mẫu.

Xóa các hàng trống trong bảng tính Excel

Sub DeleteEmptyRows()
    SelectedRange = Selection.Rows.Count
    ActiveCell.Offset(0, 0).Select
    For i = 1 To SelectedRange
        If ActiveCell.Value = "" Then
            Selection.EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Next i
End Sub

Xin lưu ý rằng bạn có thể chọn một cột ô và chạy macro này để xóa tất cả các hàng trong cột đã chọn có ô trống.

Xóa các hộp văn bản trống trong PowerPoint

Application.ActiveDocument.SaveAs ("New Document Name.docx")
0

Xin lưu ý rằng mã này lặp qua tất cả các slide và xóa tất cả các hộp văn bản không có văn bản. Biến số giảm thay vì tăng vì mỗi lần mã xóa một đối tượng, nó sẽ loại bỏ đối tượng đó khỏi bộ sưu tập, giúp giảm số lượng.

Sao chép một liên hệ từ Outlook sang Word

Application.ActiveDocument.SaveAs ("New Document Name.docx")
1

Xin lưu ý rằng mã này sao chép liên hệ hiện đang mở trong Outlook vào tài liệu Word Open.Mã này chỉ hoạt động nếu có một liên hệ hiện đang mở để kiểm tra trong Outlook.

Hỗ trợ và phản hồi

Có câu hỏi hoặc phản hồi về VBA văn phòng hoặc tài liệu này?Vui lòng xem hỗ trợ và phản hồi của Office VBA để được hướng dẫn về cách bạn có thể nhận được hỗ trợ và cung cấp phản hồi.