Đối tượng ứng dụng VBA trong Excel
Mẹ của tất cả các đối tượng là chính Excel. Chúng tôi gọi nó là đối tượng Ứng dụng. Đối tượng ứng dụng cho phép truy cập vào rất nhiều tùy chọn liên quan đến Excel.
WorksheetFunction
Bạn có thể sử dụng thuộc tính WorksheetFunction trong Excel VBA để truy cập các hàm Excel.
-
Ví dụ: đặt một liên kết: / vba-create-a-macro # command-button [command button] `trên trang tính của bạn và thêm dòng mã sau:
Range("A3").Value = Application.WorksheetFunction.Average(Range("A1:A2"))
Khi bạn nhấp vào nút lệnh trên trang tính, Excel VBA sẽ tính giá trị trung bình của các giá trị trong ô A1 và ô A2 và đặt kết quả vào ô A3.
Lưu ý: thay vì Application.WorksheetFunction.Average, chỉ cần sử dụng WorksheetFunction.Average. Nếu bạn nhìn vào thanh công thức, bạn có thể thấy rằng chính công thức đó không được chèn vào ô A3. Để chèn công thức vào ô A3, sử dụng dòng mã sau:
Range("A3").Value = "=AVERAGE(A1:A2)"
ScreenUpdating
Đôi khi bạn có thể thấy hữu ích khi tắt cập nhật màn hình (để tránh nhấp nháy) trong khi thực thi mã. Kết quả là mã của bạn sẽ chạy nhanh hơn.
-
Ví dụ: đặt
liên kết: / vba-create-a-macro # command-button [command button]
trên trang tính của bạn và thêm các dòng mã sau:
Dim i As Integer For i = 1 To 10000 Range("A1").Value = i Next i
Khi bạn nhấp vào nút lệnh trên trang tính, Excel VBA sẽ hiển thị mỗi giá trị một phần nhỏ của giây và điều này có thể mất một chút thời gian.
-
Để tăng tốc quá trình, hãy cập nhật mã như sau.
Dim i As Integer Application.ScreenUpdating = False For i = 1 To 10000 Range("A1").Value = i Next i Application.ScreenUpdating = True
Kết quả là mã của bạn sẽ chạy nhanh hơn nhiều và bạn sẽ chỉ thấy kết quả cuối cùng (10000).
DisplayAlerts
Bạn có thể hướng dẫn Excel VBA không hiển thị cảnh báo trong khi thực thi mã.
-
Ví dụ: đặt liên kết: / vba-create-a-macro # command-button [command button] `trên trang tính của bạn và thêm dòng mã sau:
ActiveWorkbook.Close
Khi bạn bấm vào nút lệnh trên trang tính, Excel VBA sẽ đóng tệp Excel của bạn và yêu cầu bạn lưu các thay đổi bạn đã thực hiện.
-
Để hướng dẫn Excel VBA không hiển thị cảnh báo này trong khi thực thi mã, hãy cập nhật mã như sau.
Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True
Do đó, Excel VBA đóng tệp Excel của bạn mà không yêu cầu bạn lưu các thay đổi bạn đã thực hiện. Mọi thay đổi đều bị mất.
Tính toán
Theo mặc định, tính toán được đặt thành tự động. Do đó, Excel sẽ tự động tính toán lại sổ làm việc mỗi khi giá trị ảnh hưởng đến công thức thay đổi. Nếu sổ làm việc của bạn chứa nhiều công thức phức tạp, bạn có thể tăng tốc macro của mình bằng cách đặt tính toán thành thủ công.
-
Ví dụ: đặt liên kết: / vba-create-a-macro # command-button [command button] `trên trang tính của bạn và thêm dòng mã sau:
Application.Calculation = xlCalculationManual
Khi bạn nhấp vào nút lệnh trên trang tính, Excel VBA sẽ đặt tính toán thành thủ công.
-
Bạn có thể xác minh điều này bằng cách nhấp vào Tệp, Tùy chọn, Công thức.
-
Bây giờ khi bạn thay đổi giá trị của ô A1, giá trị của ô B1 không được tính lại.
Bạn có thể tính toán lại sổ làm việc theo cách thủ công bằng cách nhấn F9.
-
Trong hầu hết các tình huống, bạn sẽ đặt tính toán thành tự động trở lại khi kết thúc mã của mình. Chỉ cần thêm dòng mã sau để đạt được điều này.
Application.Calculation = xlCalculationAutomatic