VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

Giới Thiệu Về Excel VBA

Excel VBA là gì? Tạo một Macro trong Excel MsgBox trong Excel VBA

Các Đối Tượng Trong Excel VBA

Hệ thống các đối tượng Đối tượng Application Đối tượng Workbook Đối tượng Worksheet Đối tượng Range

VBA Cơ Bản

Biến và kiểu dữ liệu trong VBA Comment trong VBA Toán tử trong VBA Function trong VBA Sub trong VBA Khối lệnh With-End With Mảng (Array) trong VBA Collection trong VBA Dictionary trong VBA Debug trong VBA Xử lý lỗi trong VBA Truyền tham chiếu và giá trị

Các Mệnh Đề Điều Khiển

Mệnh đề If-Else Vòng lặp For Vòng lặp For-Each Vòng lặp While-Wend Vòng lặp Do-While Vòng lặp Do-Util Mệnh đề Select-Case

VBA String

String trong VBA Hàm InStr trong VBA Hàm InStrRev trong VBA Hàm LCase trong VBA Hàm UCase trong VBA Hàm Left trong VBA Hàm Right trong VBA Hàm Mid trong VBA Hàm LTrim trong VBA Hàm RTrim trong VBA Hàm Trim trong VBA Hàm Len trong VBA Hàm Replace trong VBA Hàm Space trong VBA Hàm StrComp trong VBA Hàm String trong VBA Hàm StrReverse trong VBA

VBA Date

Date & Time trong VBA Hàm Date trong VBA Hàm CDate trong VBA Hàm DateAdd trong VBA Hàm DateDiff trong VBA Hàm PartDate trong VBA Hàm DateSerial trong VBA Hàm FormatDateTime trong VBA Hàm IsDate trong VBA Hàm Day trong VBA Hàm Month trong VBA Hàm Year trong VBA Hàm MonthName trong VBA Hàm WeekDay trong VBA Hàm WeekDayName trong VBA

VBA Time

Hàm Now trong VBA Hàm Hour trong VBA Hàm Minute trong VBA Hàm Second trong VBA Hàm Time trong VBA Hàm Timer trong VBA Hàm TimeSerial trong VBA Hàm TimeValue trong VBA
Các Ví Dụ Về Excel VBA
1 / 3
❮ ❯

Xử lý lỗi trong VBA


Debug trong Excel VBA
Truyền tham chiếu và giá trị trong VBA

Nội dung chính

  • 1. Các loại lỗi
    • Lỗi cú pháp
    • Lỗi runtime
    • Lỗi Logic
  • Xử lý lỗi trong VBA
    • Xử lý lỗi cú pháp
    • Xử lý lỗi runtime

1. Các loại lỗi

Có ba loại lỗi trong lập trình:

  • Lỗi cú pháp.
  • Lỗi runtime.
  • Lỗi Logic.

Lỗi cú pháp

Các lỗi cú pháp, còn gọi là lỗi phân tích cú pháp, xuất hiện tại thời điểm biên dịch code. Ví dụ, dòng sau gây ra một lỗi cú pháp bởi vì nó thiếu một dấu đóng ngoặc ở dòng 4.

Sub ErrorHanlding_Demo1()
   Dim str As String
   str = "Hello!"
   y = Ucase(str
End Sub 

Lỗi runtime

Các lỗi runtime, còn được gọi là lỗi ngoại lệ, xảy ra trong quá trình thực thi.

Ví dụ, dòng sau gây ra lỗi runtime vì ở đây cú pháp là chính xác nhưng khi chạy nó đang cố gọi hàm fnmultiply, nhưng hàm này không tồn tại.

Sub ErrorHanlding_Demo2()
   Dim x As Integer
   Dim y As Integer
   x = fnadd(10, 20)
   y = fnmultiply(10, 20)
End Sub 

Function fnadd(x,y)
   fnadd = x + y
End Function

Lỗi Logic

Lỗi logic có thể là loại lỗi khó khăn nhất để theo dõi. Những lỗi này không phải là kết quả của lỗi cú pháp hoặc lỗi runtime. Thay vào đó, chúng xuất hiện khi bạn mắc lỗi trong logic khiến cho đầu ra của chương trình không nhận được kết quả mong đợi.

Ví dụ, chia một số cho số không hoặc một tập lệnh được thực thi trong vòng lặp vô hạn.


Xử lý lỗi trong VBA

Xử lý lỗi cú pháp

Trình VBA Editor trong Excel hỗ trợ xử lý lỗi cú pháp, khi biên dịch trình Editor sẽ chỉ cho bạn vị trí của những lỗi cú pháp.

Để phát hiện ra nhiều lỗi khi biên dịch hay nói cách khác là hạn chế lỗi khi runtime bạn nên:

  • Khai báo biến với kiểu dữ liệu (vì VBA không yêu cầu bạn phải khai báo biến).
  • Khai báo Option Explicit trình Editor bắt những lỗi cú pháp, biến không được định nghĩa và nhiều hơn thế nữa.

Ví dụ: ví dụ sau trình Editor sẽ báo lỗi biên dịch "Variable not defined" ở dòng số 6 cho bạn.

Option Explicit

Sub ErrorHanlding_Demo1()
   Dim str As String
   str = "Hello!"
   y = UCase(str)
End Sub

Xử lý lỗi runtime

Bất kỳ lỗi runtime nào xảy ra đều gây hiện tượng dừng đột ngột. Bạn có thể sử dụng câu lệnh On Error để bắt các lỗi runtime trong VBA với cú pháp như sau:

On Error { GoTo [ line | 0 | -1 ] | Resume Next }
No. Từ khóa & Mô tả
1

GoTo line

Cho phép xử lý lỗi bắt đầu ở dòng được chỉ định. Dòng được chỉ định phải ở trong cùng một thủ tục với câu lệnh On Error.

2

GoTo 0

Vô hiệu hoá xử lý lỗi đã kích hoạt trong thủ tục hiện tại và đặt lại nó thành Nothing.

3

GoTo -1

Vô hiệu hóa ngoại lệ được bật trong thủ tục hiện tại và đặt lại nó thành Nothing.

4

Resume Next

Chỉ định rằng khi xảy ra lỗi runtime, điều khiển sẽ đi đến câu lệnh ngay sau câu lệnh nơi xảy ra lỗi và việc thực hiện vẫn tiếp tục từ thời điểm đó.

Đối tượng Err

Đối tượng này được sử dụng để lấy ra thông tin lỗi, ví dụ Err.Number cung cấp mã số lỗi và Err.Description cung cấp cho các mô tả lỗi.

Ví dụ xử lý lỗi trong VBA

Ví dụ cho một bảng tính, tính căn bậc hai của các giá trị của cell A1 đến A5 và điền vào cell B1 đến B5 tương ứng.

Option Explicit

Public Const COL_A = "A"
Public Const COL_B = "B"

Sub ErrorHanlding_Demo()
    Dim i As Integer
    
    On Error GoTo InvalidValue:
    
    For i = 1 To 5
        Cells(i, COL_B).Value = Sqr(Cells(i, COL_A).Value)
    Next i
    
    Exit Sub
    
InvalidValue:
    MsgBox "Error: " & Err.number & " : " & Err.Description
    Resume Next
End Sub

Kết quả:

Ví dụ xử lý lỗi trong VBA

Click Square Root button: có 2 lỗi được bắt và show ra như sau:

Lỗi 1: không thể tính căn bậc hai của số âm.

Ví dụ xử lý lỗi trong VBA

Lỗi 2: kiểu dữ liệu không phù hợp.

Ví dụ xử lý lỗi trong VBA

Kết quả tính căn bậc hai:

Ví dụ xử lý lỗi trong VBA
Debug trong Excel VBA
Truyền tham chiếu và giá trị trong VBA

Recent Updates

Phím tắt hay dùng trong ExcelBảo mật tập tin ExcelDịch trang tính trong ExcelIn trang tính trong ExcelHàm VLOOKUP trong ExcelĐối tượng đồ họa trong ExcelSử dụng macro trong ExcelSử dụng Templates trong ExcelSử dụng chủ đề (theme) trong ExcelSử dụng Style trong ExcelXác thực dữ liệu (Data Validation) trong ExcelSử dụng phạm vi (Range) trong ExcelSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học VBA Excel Online
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml