• Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
Chủ Nhật, Tháng Ba 26, 2023
  • Login
No Result
View All Result
NEWSLETTER
Học gia sư kế toán
  • Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
  • Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
No Result
View All Result
Học Gia sư Kế toán
No Result
View All Result

Cách tốt nhất để cải thiện tốc độ phản hồi của macro VBA cũng như hạn chế tình trạng lệnh chạy ì ạch

by My Lê
21/02/2023
in VBA
0
Cách tốt nhất để cải thiện tốc độ phản hồi của macro VBA cũng như hạn chế tình trạng lệnh chạy ì ạch

Originally posted on 12/02/2022 @ 21:39

Cách tốt nhất để cải thiện tốc độ phản hồi của macro VBA cũng như hạn chế tình trạng lệnh chạy ì ạch

  • Chuyên mục:
  • Excel VBA

Đây là vấn đề đã được bàn luận nhiều lần, tuy vậy đối với người mới làm quen với VBA cũng như khái niệm lập trình tin học nói chung, việc có một phương pháp tiếp cận đơn giản hơn mà không dùng quá nhiều kiến thức chuyên ngành là rất quan trọng.

Đoạn mã dưới đây có khả năng giúp tăng tốc độ chạy lệnh của bạn, chỉ bằng 2 bước đơn giản là sao chép và dán. Đầu tiên, bạn chỉ cần sao chép 2 hàm thủ tục dưới đây và sau đó dán chúng vào mô-đun lệnh của VBA là xong.

Đoạn mã VBA thứ nhất

Public CalcState As Long
Public EventState As Boolean
Public PageBreakState As Boolean

Sub OptimizeCode_Begin()

Application.ScreenUpdating = False

EventState = Application.EnableEvents
Application.EnableEvents = False

CalcState = Application.Calculation
Application.Calculation = xlCalculationManual

PageBreakState = ActiveSheet.DisplayPageBreaks
ActiveSheet.DisplayPageBreaks = False

End Sub

Đoạn mã VBA thứ hai

Sub OptimizeCode_End()

ActiveSheet.DisplayPageBreaks = PageBreakState
Application.Calculation = CalcState
Application.EnableEvents = EventState
Application.ScreenUpdating = True

End Sub

Tiếp theo, bạn cần phải điền 2 lệnh này vào phần đầu và phần cuối của macro. Ví dụ minh họa như sau:

Sub MyAwesomeMacro()

Dim x As Long
Dim y As Long
Dim cell As Range

'Optimize Code
  Call OptimizeCode_Begin

'Insert your macro code here...
  x = Range("A1")
  y = Range("A3")
  
  For Each cell In Range("C2:C2000)")
    cell.Value = (x - cell.Row) / y
  Next cell
  
'Optimize Code
  Call OptimizeCode_End

End Sub

Lý do vì sao đoạn mã trên có khả năng tăng tốc chuỗi lệnh?

Đoạn mã VBA phía trên về cơ bản có tác dụng tắt bỏ một thiết lập quan trọng trong Office: tận dụng bộ nhớ máy tính để liên tục cập nhật hoạt động của macro lên màn hình (theo thời gian thực). Chính tính năng này khiến máy chạy chậm hơn mỗi khi phải xử lý mã lệnh và dần dần khiến máy không thể hoạt động nhanh nhất có thể. Lý do là bởi bạn đã ép chiếc máy tính của mình phải làm quá nhiều việc cùng một lúc.

Để dập tắt mọi hoài nghi, dưới đây là những lý do cụ thể giải thích vì sao đoạn mã trên lại có tác dụng tăng tốc tốt đến vậy.


VBA101 92019 nho
  1. Tắt bỏ tính năng cập nhật màn hình liên tục

Tôi còn nhớ đã từng phải chờ 30 phút để chạy xong một macro do chính đồng nghiệp của tôi viết (quy trình chạy khá phức tạp và nội dung câu lệnh cũng khá lủng củng nữa). Cảm giác lúc đó giống như bị tẩy não vậy, đặc biệt là khi bạn phải dán mắt vào màn hình máy tính nhấp nháy liên tục trong suốt 30 phút! Thật may là tôi đã phát hiện ra được một đoạn mã nhỏ có khả năng vừa bảo vệ được thị giác của mình, đồng thời tăng tốc đáng kể thời gian chạy lệnh trên thực tế. Việc bạn luôn phải làm đó là tắt bỏ chế độ cập nhật màn hình liên tục đi. Nó thực sự chỉ có ích nếu như câu lệnh bạn chạy có kèm theo các hiệu ứng đồ họa đẹp mắt

  1. Tắt chế độ tự động ngắt trang

Bản thân tôi không thích bật dấu ngắt trang trong văn bản cho lắm, nhưng thực tế có một vài người lại thích điều đó. Hạn chế của dấu ngắt trang trong quá trình chạy lệnh VBA đó là việc Excel luôn tự động ngắt trang lại mỗi khi người dùng thay đổi nội dung của trang tính. Bạn hãy thử tưởng tượng rằng nếu như ta phải xóa hoặc thêm bớt hàng nghìn dòng dữ liệu thì sẽ mất bao lâu để chạy xong đoạn lệnh VBA đó. Chính vì lý do kể trên, lời khuyên tốt nhất đó là nên tắt đi chức năng tự ngắt trang này trong quá trình khởi động lệnh.

Đừng bỏ lỡ: Học Excel nhanh cùng các chuyên gia

Cách sử dụng Page Break trong trường hợp này sẽ không giống với những lần trước đó. Ta sử dụng Page Break làm thiết lập cho bảng tính, thay vì chỉ đơn giản là thiết lập trong ứng dụng thông thường. Điều đó có nghĩa là mỗi bảng tính đều sẽ xuất hiện một “công tắc mềm” bên cạnh có chức năng ngắt trang. Để không ảnh hưởng đến nội dung mã lệnh, giả sử rằng macro chỉ tác động đến trang tính đang mở hiện tại. Nếu như có nhiều trang tính đều chịu ảnh hưởng của câu lệnh, bạn nên tắt chức năng tự động ngắt trang cho tất cả. Để tiện lợi nhất, bạn thậm chí có thể tạo 1 đoạn mã lệnh VBA có chức năng tắt tất cả các dấu ngắt trang đang hoạt động trong quá trình mã lệnh được chạy.

  1. Tắt chế độ tự động tính toán lại

Nếu trong quá trình chạy lệnh có một số ô tính chứa công thức bị ảnh hưởng, Excel sẽ tự tính toán lại giá trị của ô tính đó theo thời gian thực. Để nâng cao hiệu suất của mã lệnh, bạn cần phải tắt chức năng này đi trong quá trình lệnh được chạy. Lưu ý là sau khi lệnh chạy xong, bạn nhớ phải bật lại chế độ tự động cập nhật công thức (hoặc chế độ bán tự động), nếu không bạn hoặc người dùng sẽ không thể hình dung được nội dung bảng tính thay đổi như thế nào.

  1. Hạn chế tác động của các kích ứng hiện tượng ngoài ý muốn

VBA rất dễ chịu tác động của những “hiện tượng kích ứng” xảy ra trong quá trình người dùng làm việc với Excel. Đó có thể là việc khởi động một bảng tính lên hoặc thay đổi nội dung nào đó trong bảng. Hiện tượng sau khi bị kích ứng sẽ xảy ra và hoạt động liên tục trong quá trình lệnh VBA đang chạy. Điều này dẫn đến việc một số đoạn mã không cần thiết được khởi động chạy, dẫn đến tình huống xấu nhất đó là bảng tính bị xáo trộn và làm gián đoạn quá trình chạy mã VBA. Tắt đi các kích ứng này sẽ làm cho việc chạy lệnh VBA trở nên mượt mà hơn.

VBA giúp ích rất nhiều trong công việc: giúp bạn tăng tốc trong quá trình xử lý trên Excel, giúp lập các báo cáo tự động, điều khiển các chương trình khác như Word, Power Point, Outlook … giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp …

Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống Học Gia Sư Kế Toán. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Chi tiết xem tại:


@
·
·
·
Bài viết khác của cùng tác giả

  • Tất cả
  • Python
  • SQL
  • VBA

3.000.000VND 1.800.000VND
PYXL101
Xem chi tiết

3.000.000VND 1.600.000VND
SQL100
Xem chi tiết

499.000VND 199.000VND
PY100
Xem chi tiết

Bài viết liên quan

Cách tạo menu chuyển động đẹp trong Excel sử dụng VBA

Cách lọc lấy số trong ô lẫn cả số và chữ hoặc ngược lại

Cách xóa nội dung trùng lặp trong một ô của Excel

Tải về miễn phí File Excel quản lý kho bằng excel VBA

Xác định ngày bất kỳ là thứ mấy trong tuần

Hướng dẫn cách đếm ký tự, ký tự đặc biệt trong một ô hoặc một dải ô trong Excel


Khóa học liên quan

Khóa học Tự động hóa Excel với lập trình VBA cho người mới bắt đầu
Chi tiết khóa học

Khóa học Lập trình VBA nâng cao trong Excel
Chi tiết khóa học

  

© Học Gia Sư Kế Toán. All rights reserved.

My Lê

My Lê

My Lê tên thật là Mê Ly đã có 10 năm kinh nghiệm trong ngành kế toán.

Next Post
Hướng dẫn cách lọc dữ liệu vào Báo cáo chi tiết trong Excel bằng VBA

Hướng dẫn cách lọc dữ liệu vào Báo cáo chi tiết trong Excel bằng VBA

Recommended

Cách gộp ô trong Excel mà không mất dữ liệu

Cách gộp ô trong Excel mà không mất dữ liệu

1 tháng ago

Hạch toán tài khoản 3333 – Thuế xuất, nhập khẩu theo hướng dẫn của Thông tư 200

4 tuần ago

Tin mới nhất

    Fanpage

    • Liên hệ
    • Giới thiệu
    • Đặt quảng cáo
    Liên hệ chúng tôi qua email : hocgiasuketoan.com@gmail.com

    © 2022 Hocgiasuketoan Premium magazine by Hocgiasuketoan

    No Result
    View All Result
    • Trang chủ
    • Giới thiệu
      • Học gia sư kế toán tại Hà Nội
    • Excel
    • Kế toán
    • Kinh nghỉệm
    • DAX
    • VBA
    • Văn bản
    • Access
    • Liên hệ
      • Chính sách bảo mật

    © 2022 Hocgiasuketoan Premium magazine by Hocgiasuketoan

    Welcome Back!

    Login to your account below

    Forgotten Password?

    Retrieve your password

    Please enter your username or email address to reset your password.

    Log In