Đối tượng Application trong Excel VBA

Đối tượng Application trong Excel VBA là đối tượng đại diện cho phần mềm Excel của Microsoft trong tiếng nói lập trình VBA, những thiết lập can dự đến phần mềm, phương pháp tính toán, các chế độ tùy chọn đều mang thể được thiết lập dựa trên các phương thức và tính chất của đối tượng Application này.

Trong phạm vi bài viết này, Thanh sẽ giới thiệu có Anh chị em các đoạn code VBA hay được dùng nhất can hệ đến đối tượng Application.

DisplayAlerts – phương pháp ẩn thông báo lúc dùng code VBA để xóa Sheet

giả như bạn muốn xóa Sheet ở trong Excel, hãy tưởng tượng xem, giả dụ bạn "nhỡ" chạy đoạn code VBA sau đây và phải bấm thông tin xác nhận xóa Sheets 10 lần? Khiến thế nào để giải quyết được vấn đề này?

Sub test_xoa_sheet()For i = 1 to 10Sheets(i).DeleteNext i End Sub

Đây là thông báo mà bạn cần bấm để xác nhận (10 lần):

thong-bao-xac-nhan-xoa-sheets-vba

Để không hề bấm thông tin này 10 lần như trong tình huống phía trên, bạn sẽ cần dùng đến một thuộc tính của đối tượng Application trong Excel ấy là DisplayAlerts bí quyết sử dụng sẽ như đoạn code sau đây:

Sub test_xoa_sheet()Application.DisplayAlerts = FalseFor i = một lớn 10Sheets(i).DeleteNext iApplication.DisplayAlerts = True End Sub

trong khi dùng vòng lặp để xóa những Sheets có vị trí từ 1 tới 10 thì chúng ta sẽ thiết lập tính chất DisplayAlert của đối tượng Application là False, sau khi xóa xong thì chúng ta nên trả lại trị giá cho tính chất này là True.

thuộc tính Path của đối tượng Application

thuộc tính Path của đối tượng Application được dùng để lấy các con phố dẫn đến thư mục chứa áp dụng (Excel)

Sub test_path()Debug.Print Application.Path End Sub ' Kết quả trên hệ quản lý Windows:  '  C:\Program Files\Microsoft Office\root\Office16 ' Kết quả trên hệ quản lý MacOS: '  /Applications/Microsoft Excel.app

Như Anh chị đã thấy, cộng một câu lệnh, nhưng ví như chúng ta chạy trên mỗi máy khác nhau, sẽ có kết quả khác nhau, Anh chị em để ý ví như Cả nhà muốn viết code VBA mà mang thể chạy được cho cả hệ quản lý Windows, cả hệ quản lý MacOs thì chúng ta cần lưu ý tới đường dẫn, và đặc trưng là ký tự ngăn bí quyết giữa những thư mục, bởi vì trên Windows, ký tự ngăn cách thức là dấu \ còn trên MacOs, thì ký tự ngăn cách là dấu / điều này sẽ dẫn chúng ta đến phần tiếp theo khi nhắc về trục đường dẫn để mở File

thuộc tính PathSeparator của đối tượng Application trong VBA Excel

Chúng ta với một đoạn code đơn thuần như sau để mở 1 Workbook:

Sub test_path_separator()Dim wb As WorkbookSet wb = Workbooks.Open(ThisWorkbook.Path & "\" & "Book2.xlsx") End Sub

Mục đích của chúng ta là mở một file Excel tên là "Book2.xlsx" trong cộng thư mục mang Workbook đang chạy code VBA. Trong đoạn code trên, phần "\" có thể gây ra lỗi bởi vì \ là ký tự ngăn cách trục đường dẫn trên Windows, còn trên MacOs, thì sử dụng ký tự /. Vậy nên, để an toàn nhất, chúng ta sẽ sử dụng thuộc tính PathSeparator và sẽ sửa lại đoạn code như sau:

Sub test_path_separator()Dim wb As WorkbookSet wb = Workbooks.Open(ThisWorkbook.Path & Application.PathSeparator & "Book2.xlsx") End Sub

ScreenUpdating – nâng cao tốc code VBA Excel đơn giản

giả dụ code VBA của bạn thực hành phổ biến thao tác xử lý trên giao diện của Excel, tỉ dụ như lọc, sắp xếp, thì tính chất ScreenUpdating của đối tượng Application sẽ giúp bạn tránh thời gian thực thi code bằng cách tắt chế độ cập nhật màn hình lúc code đang chạy. Kèm theo sau lúc chạy xong code VBA thì chúng ta cần bật lại chế độ này để các thay đổi như công thức, bộ lọc, Pivot Table, … với thể được cập nhật khi chúng ta tương tác. Bí quyết sử dụng ScreenUpdating cũng rất thuần tuý như sau để Cả nhà với thể mường tượng và so sánh sự khác biệt:

Sub no_screen_updating()For i = 1 to 10000Sheets(1).Cells(i, 1) = iNext iMsgBox "Done" End Sub Sub with_screen_updating()Application.ScreenUpdating = FalseFor i = 1 to 10000Sheets(1).Cells(i, 1) = iNext iApplication.ScreenUpdating = TrueMsgBox "Done" End Sub

Application.Wait – hứa giờ chạy code VBA

có những thao tác chúng ta sẽ cần code VBA chạy chậm lại, hoặc chạy với "khoảng thời gian" nghĩ giữa các vòng lặp, ví dụ như là việc gửi email trong VBA chẳng hạn. Chúng ta sở hữu thể tiêu dùng Application.Wait để làm điều này, hãy tham khảo đoạn code sau đây, MsgBox sẽ hiện lên sau 3s nói tính từ lúc chúng ta chạy Sub:

Sub test_wait()Application.Wait Now + TimeValue("00:00:03")MsgBox "Sau 3s code se chay" End Sub

bên cạnh đó, để thực thi code VBA vào 1 thời khắc cụ thể, bạn chỉ cần bỏ Now đi:

Sub test_wait()Application.Wait TimeValue("00:00:03")MsgBox "Code se chay vao luc 00:00:03" End Sub

Trên đây là các tính chất của đối tượng Application trong lập trình VBA Excel thường hay được dùng nhất. Để biết thêm các áp dụng của các thuộc tính này trong những trường hợp cụ thể như thế nào, bạn hãy tham khảo những khóa học VBA trong khoảng Thanh:

Share on Google Plus
    Blogger Comment
    Facebook Comment

0 nhận xét:

Đăng nhận xét