Trong khuôn khổ bài viết này, Thanh sẽ ra mắt với những bạn những đoạn code VBA hay được sử dụng nhất tương quan đến đối tượng người tiêu dùng Application .
DisplayAlerts – cách ẩn thông báo khi dùng code VBA để xóa Sheet
Giả sử bạn muốn xóa Sheet ở trong Excel, hãy tưởng tượng xem, nếu 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 ? Làm thế nào để khắc phục được yếu tố này ?
Sub test_xoa_sheet()
For i = 1 To 10
Sheets(i).Delete
Next i
End Sub
Đây là thông báo mà bạn cần bấm để xác nhận (10 lần):
Để không phải bấm thông báo này 10 lần như trong tình huống phía trên, bạn sẽ cần sử dụng tới một thuộc tính của đối tượng Application trong Excel đó là DisplayAlerts cách sử dụng sẽ như đoạn code sau đây:
Sub test_xoa_sheet()
Application.DisplayAlerts = False
For i = 1 To 10
Sheets(i).Delete
Next i
Application.DisplayAlerts = True
End Sub
Trong khi sử dụng vòng lặp để xóa những Sheets có vị trí từ 1 tới 10 thì tất cả chúng ta sẽ thiết lập thuộc tính DisplayAlert của đối tượng người dùng Application là False, sau khi xóa xong thì tất cả chúng ta nên trả lại giá trị cho thuộc tính 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 người tiêu dùng Application được dùng để lấy đường dẫn tới thư mục chứa ứng dụng ( Excel )
Sub test_path()
Debug.Print Application.Path
End Sub
' Kết quả trên hệ điều hành Windows:
' C:\Program Files\Microsoft Office\root\Office16
' Kết quả trên hệ điều hành MacOS:
' /Applications/Microsoft Excel.app
Như các bạn đã thấy, cùng một câu lệnh, nhưng nếu chúng ta chạy trên mỗi máy khác nhau, sẽ có kết quả khác nhau, các bạn để ý nếu các bạn muốn viết code VBA mà có thể chạy được cho cả hệ điều hành Windows, cả hệ điều hành MacOs thì chúng ta cần lưu ý tới đường dẫn, và đặc biệt là ký tự ngăn cách giữa các thư mục, bởi vì trên Windows, ký tự ngăn cách 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 nói về đường dẫn để mở File
Thuộc tính PathSeparator của đối tượng Application trong VBA Excel
Chúng ta có một đoạn code đơn giản như sau để mở một Workbook:
Sub test_path_separator()
Dim wb As Workbook
Set 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 với 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 đường dẫn trên Windows, còn trên MacOs, thì 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 Workbook
Set wb = Workbooks.Open(ThisWorkbook.Path & Application.PathSeparator & "Book2.xlsx")
End Sub
ScreenUpdating – tăng tốc code VBA Excel đơn giản
Nếu code VBA của bạn triển khai nhiều thao tác giải quyết và xử lý trên giao diện của Excel, ví dụ như lọc, sắp xếp, thì thuộc tính ScreenUpdating của đối tượng người tiêu dùng Application sẽ giúp bạn giảm thiểu thời hạn thực thi code bằng cách tắt chính sách update màn hình hiển thị khi code đang chạy. Tất nhiên sau khi chạy xong code VBA thì tất cả chúng ta cần bật lại chính sách này để những biến hóa như công thức, bộ lọc, Pivot Table, … hoàn toàn có thể được update khi tất cả chúng ta tương tác. Cách sử dụng ScreenUpdating cũng rất đơn thuần như sau để những bạn hoàn toàn có thể tưởng tượng và so sánh sự độc lạ :
Sub no_screen_updating()
For i = 1 To 10000
Sheets(1).Cells(i, 1) = i
Next i
MsgBox "Done"
End Sub
Sub with_screen_updating()
Application.ScreenUpdating = False
For i = 1 To 10000
Sheets(1).Cells(i, 1) = i
Next i
Application.ScreenUpdating = True
MsgBox "Done"
End Sub
Application.Wait – Hẹn giờ chạy code VBA
Có những thao tác tất cả chúng ta sẽ cần code VBA chạy chững lại, hoặc chạy có “ khoảng chừng thời hạn ” nghĩ giữa những vòng lặp, ví dụ như thể việc gửi email trong VBA ví dụ điển hình. Chúng ta hoàn toàn có thể sử dụng Application. Wait để làm điều này, hãy tìm hiểu thêm đoạn code sau đây, MsgBox sẽ hiện lên sau 3 s kể từ khi tất 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
Ngoài ra, để thực thi code VBA vào một thời gian đơn cử, 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à những thuộc tính của đối tượng người dùng Application trong lập trình VBA Excel thường hay được sử dụng nhất. Để biết thêm những ứng dụng của những thuộc tính này trong những trường hợp đơn cử như thế nào, bạn hãy tìm hiểu thêm những khóa học VBA từ Thanh :
Khóa học VBA cơ bản:
Tự động hóa Excel với lập trình VBA cho người mới mở màn
Toàn bộ các khóa học lập trình VBA:
Tham khảo hàng loạt những khóa học lập trình VBA
Source: https://vietsofa.vn
Category : Góc học tập
+ There are no comments
Add yours