Tìm hiểu về VBA và cách sử dụng cơ bản nhất trong Excel (Phần 1)

Trần Văn Huệ
Trần Văn Huệ
Oct 15 2020

Cách tạo Macro trong Excel

Với VBA trong Excel, bạn có thể tự động hóa các tác vụ bằng cách viết cái gọi là macro. Trong phần đầu của bài viết này, hãy cùng Gitiho tìm hiểu cách tạo một macro đơn giản sẽ được thực thi sau khi kích vào nút lệnh. Bắt đầu bằng cách bật thẻ nhà phát triển Developer. 

Developer Tab

Để bật tab Developer bạn hãy thực hiện theo các bước sau: 

Bước 1: Kích chuột phải vào bất kỳ vị trí nào trên giao diện ribbon của Excel rồi chọn tùy chọn Customize the Ribbon … trong menu xổ xuống. 

Developer Tab

Bước 2: Trong cửa sổ mới hiện thị, chọn tùy chọn Main Tabs phía dưới mục Customize the Ribbon ở bên phải (nếu cần).

Bước 3: Di chuyển xuống phía dưới của mục Main Tabs, kích vào tùy chọn Developer.

Developer Tab

Bước 4: Bấm nút OK để hoàn tất.

Bước 5: Quay trở lại giao diện ribbon, bạn sẽ tìm thấy thẻ Developer bên cạnh tab View như hình dưới đây.

Developer Tab

Nút lệnh

Để đặt một nút lệnh trên file Excel của bạn, hãy thực hiện các bước sau.

Bước 1: Trên tab Developer bấm nút Insert. 

Bước 2: Trong nhóm ActiveX Controls của menu xổ xuống, bấm nút Command Button.

Developer Tab

Bước 3: Kích giữ chuột trái và kéo để tạo một nút lệnh trên sheets bất kỳ trong file Excel, nơi bạn muốn đặt nút lệnh.

Chỉ định Macro

Để gán macro (một hoặc nhiều dòng mã) cho nút lệnh, hãy thực hiện các bước sau.

Bước 1: Kích chuột phải vào nút CommandButton1 (đảm bảo nút Design Mode được chọn).

Bước 2: Chọn tùy chọn View Code trong menu xổ xuống. Trình soạn thảo Visual Basic xuất hiện.

Chỉ định Macro

Bước 3: Đặt con trỏ của bạn giữa Private Sub CommandButton1_Click() và End Sub.

Bước 4: Nhập vào dòng mã hiển thị như bên dưới.

Range("A1").Value = "Gitiho xin chào các bạn"

Cách sử dụng VBA trong Excel

Lưu ý: Cửa sổ bên trái có tên là Sheet1 (Sheet1) và ThisWorkbook được gọi là Project Explorer. Nếu Project Explorer không hiển thị, hãy bấm View, Project Explorer. Nếu cửa sổ Code cho Sheet1không hiển thị, hãy bấm Sheet1 (Sheet1). 

Bước 5: Đóng cửa sổ Visual Basic Editor.

Bước 6: Kích vào nút lệnh trên trang tính (đảm bảo nút Design Mode được bỏ chọn).

Kết quả sẽ hiển thị như hình dưới đây:

Cách sử dụng VBA trong Excel

Như vậy bạn vừa tạo một macro đơn giản trong Excel.

Trình soạn thảo Visual Basic Editor

Để mở trình soạn thảo Visual Basic Editor, trên tab Developer, bấm nút Visual Basic hoặc nhấn tổ hợp phím Alt+F11.

Cách sử dụng VBA trong Excel

Cửa sổ trình soạn thảo Visual Basic Editor sẽ hiển thị như hình dưới đây.

Cách sử dụng VBA trong Excel

Xem thêm: Hướng dẫn về đối tượng Range trong VBA cơ bản

MsgBox trong Excel

Để tăng tính tương tác cho bảng tính Excel có sử dụng VBA của bạn, cụ thể trong trường hợp bạn muốn đưa ra một thông báo, một lưu ý cho người dùng, chúng ta dùng MsgBox trong Excel VBA.

MsgBox là một hộp thoại trong Excel có sử dụng VBA. Mục đích của việc tạp hộp thoại này là đưa ra một thông báo cho người dùng. Một MsgBox trong Excel VBA có thể được tạo ra trong trình soạn thảo code VBA của Excel như sau:

Một tin nhắn đơn giản

Bằng cách thực hiện các bước tương tự như mục Chỉ định macro ở trên, nhưng đến bước 3 thì bạn nhập vào mã sau: 

    MsgBox "Học tin học với Gitiho thật thú vị"

Lưu ý: Đoạn mã trên phải được nhập vào giữa dòng Private Sub CommandButton1_Click () và End Sub. Có nghĩa mã đầy đủ sẽ như sau:

Private Sub CommandButton1_Click () 
    MsgBox "Hoc tin hoc voi Gitiho that thu vi"
End Sub

Sau đó đóng cửa sổ Visual Basic Editor và bấm vào nút lệnh để chạy đoạn code trên trong Excel VBA, chúng ta sẽ nhận được kết quả như sau:

Cách sử dụng VBA trong Excel

Một tin nhắn nâng cao hơn một chút

Thay vì đưa ra một thông báo đơn giản như trên bạn có thể tạo một thông báo kiểu như yêu cầu nhập một số vào ô A1. Lúc này mã chính sẽ như sau: 

MsgBox "Entered value is " & Range("A1").Value

Khi bạn bấm vào nút lệnh trong Excel VBA sẽ nhận được kết quả như sau:

Cách sử dụng VBA trong Excel

Lưu ý: Trong câu lệnh trên Gitiho đã sử dụng toán tử & để nối (nối) hai chuỗi. Mặc dù giá trị Range ("A1"). Không phải là một chuỗi, nhưng nó vẫn hoạt động ở đây.

Để bắt đầu một dòng mới trong tin nhắn, hãy sử dụng vbNewLine

Sử dụng đoạn mã sau

MsgBox "Line 1" & vbNewLine & "Line 2"

Khi bạn bấm vào nút lệnh trong Excel VBA sẽ nhận được kết quả như sau

Cách sử dụng VBA trong Excel

Lưu ý: Những đoạn mã chỉ có mình phần mã chính. Bạn phải nhập các đoạn mã đó nằm giữa Private Sub CommandButton1_Click() và End Sub để có được một mã VBA hoàn chỉnh.

Xem thêm: Tìm hiểu về cách tự tạo hàm Excel trong VBA 

Đối tượng Workbook và Worksheet

Phần tiếp theo Gitiho sẽ cùng các bạn tìm hiểu thêm về đối tượng Workbook và Worksheet trong Excel VBA .

Cấu trúc phân cấp đối tượng

Trong Excel VBA, một đối tượng có thể chứa một đối tượng khác và đối tượng đó có thể chứa một đối tượng khác ... Nói cách khác, lập trình VBA trong Excel liên quan đến việc làm việc với một hệ thống phân cấp đối tượng. Điều này nghe có vẻ khá khó hiểu, nhưng chúng tôi sẽ nói rõ.

“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 (Application). Đối tượng ứng dụng chứa các đối tượng khác. Ví dụ, đối tượng Workbook (tệp Excel). Đây có thể là bất kỳ workbook nào bạn đã tạo. Đối tượng Workbook chứa các đối tượng khác, chẳng hạn như đối tượng Worksheet. Đối tượng Worksheet lại chứa các đối tượng khác, chẳng hạn như đối tượng Phạm vi (Range object).

Ở phần tạo Macro đầu tiên trong bài này đã hướng dẫn chi tiết về cách chạy một mã VBA bằng cách bám vào nút lệnh. Trong đó chúng tôi đã sử dụng dòng mã sau:

Range("A1").Value = "Hello"

Nhưng ý nghĩa của dòng mã trên thực sự là:

Application.Workbooks("create-a-macro").Worksheets(1).Range("A1").Value = "Hello"

Lưu ý: Các đối tượng được kết nối bằng dấu chấm. Tuy nhiên chúng ta không phải thêm một dòng mã theo cách này. Đó là vì chúng ta đã đặt một nút lệnh của mình trong tệp create-a-macro.xlsm, trên worksheet đầu tiên. Nhưng nếu bạn muốn thay đổi mọi thứ trên các worksheet khác nhau, phải bao gồm đối tượng Worksheet.

Bộ sưu tập

Bạn có thể nhận thấy rằng Workbooks và Worksheets đều là số nhiều. Đó là bởi vì chúng là bộ sưu tập. Bộ sưu tập Workbooks chứa tất cả các đối tượng Workbook hiện đang mở. Trong khi bộ sưu tập Worksheets lại chứa tất cả các đối tượng Worksheet trong sổ làm việc.

Cách sử dụng VBA trong Excel

Bạn có thể tham chiếu đến một thành viên của bộ sưu tập, ví dụ một đối tượng Worksheet đơn lẻ, theo ba cách.

1. Sử dụng tên Worksheet.

Worksheets("Sales").Range("A1").Value = "Hello"
2. Sử dụng số chỉ mục (1 là trang tính đầu tiên bắt đầu từ bên trái).
Worksheets(1).Range("A1").Value = "Hello"

3. Sử dụng CodeName.

Sheet1.Range("A1").Value = "Hello"

Để xem CodeName của một worksheet bạn cần mở trình soạn thảo Visual Basic Editor. Trong Project Explorer, tên đầu tiên là CodeName. Tên thứ hai là tên worksheet (Sales), như hình ảnh dưới đây

Cách sử dụng VBA trong Excel

Lưu ý: CodeName vẫn giữ nguyên nếu bạn thay đổi tên worksheet hoặc thứ tự các worksheet của mình, vì vậy đây là cách an toàn nhất để tham chiếu worksheet. Bằng cách bấm menu View > Properties để thay đổi CodeName của một worksheet. Nhưng có một nhược điểm của phương pháp này đó là bạn không thể sử dụng CodeName nếu tham chiếu một worksheet trong một workbook khác.

Thuộc tính và phương thức

Bây giờ chúng ta hãy xem xét một số thuộc tính (Properties) và phương thức (Methods) của bộ sưu tập Workbooks và Worksheets. Thuộc tính là cái gì đó mà một bộ sưu tập có (chúng mô tả bộ sưu tập), trong khi phương thức thực hiện một cái gì đó (chúng thực hiện một hành động với một bộ sưu tập).

Để đặt một nút lệnh trên worksheet của bạn và thêm các dòng mã:

1. Chèn Method của bộ sưu tập Workbooks để tạo một workbook mới.

Workbooks.Add

2. Thuộc tính Count của bộ sưu tập Worksheets đếm số trang tính trong worksheets.

MsgBox Worksheets.Count

Kết quả khi bạn bấm vào nút lệnh trên trang tính sẽ có bảng thông báo như dưới đây hiển thị:

Cách sử dụng VBA trong Excel

Lưu ý: Thuộc tính Count của bộ sưu tập Workbooks sẽ đếm số lượng workbooks đang hoạt động.

Lưu ý: Những đoạn mã chỉ có mình phần mã chính. Bạn phải nhập các đoạn mã đó nằm giữa Private Sub CommandButton1_Click() và End Sub để có được một mã VBA hoàn chỉnh.

Xem thêm:  Hướng dẫn các phép toán trong VBA: Phép nhân, phép chia, phép cộng, mô đun

Đối tượng phạm vi Range Object

Đối tượng phạm vi Range Object là đại diện của một ô (hoặc nhiều ô) trên bảng tính (worksheet) của bạn, là đối tượng quan trọng nhất của Excel VBA. 

Ở phần tiếp theo này Gitiho sẽ giới thiệu tổng quan về các thuộc tính và phương thức của đối tượng Range. Thuộc tính là một cái gì đó mà một đối tượng có (chúng mô tả đối tượng), trong khi các phương thức thực hiện một cái gì đó (chúng thực hiện một hành động với một đối tượng).

Ví dụ về phạm vi

Đặt một nút lệnh trên trang tính của bạn và nhập vào các dòng mã sau vào cửa sổ Visual Basic Editor:

Private Sub CommandButton1_Click () 
Range("B3").Value = 2 
End Sub

Khi bạn nhấp vào nút lệnh trên trang tính, chúng ta sẽ nhật được kết quả như sau:

Cách sử dụng VBA trong Excel

Với mã sau:

Private Sub CommandButton1_Click () 
Range("A1:A4").Value = 5 
End Sub

Bạn sẽ nhận được kết quả như hình dưới đây

Cách sử dụng VBA trong Excel

Tương tự như vậy với mã sau:

Range("A1:A2,B3:C4").Value = 10

Bạn sẽ nhận được kết quả như hình dưới đây

Cách sử dụng VBA trong Excel

Lưu ý: Để tham chiếu đến phạm vi được đặt tên trong mã VBA Excel của bạn, hãy sử dụng dòng mã như sau:

Range("Prices").Value = 15

Cell

Thay vì phạm vi (Range), bạn cũng có thể sử dụng Ô (cell). Sử dụng Ô đặc biệt hữu ích khi bạn muốn lặp qua các phạm vi.

Mã sử dụng sẽ như sau:

Cells(3, 2).Value = 2

Kết quả trả về của lệnh trên sẽ như hình dưới đây.

Cách sử dụng VBA trong Excel

Giải thích: Excel VBA nhập giá trị 2 vào ô ở giao điểm của hàng 3 và cột 2.

Với đoạn mã sau:

Range(Cells(1, 1), Cells(4, 1)).Value = 5

Kết quả sẽ trả về trong trang tính như hình dưới đây.

Cách sử dụng VBA trong Excel

Khai báo một đối tượng phạm vi

Bạn có thể khai báo một đối tượng phạm vi bằng cách sử dụng các từ khóa Dim và Set.

Sử dụng đoạn mã đầy đủ như sau để thực hiện:

Private Sub CommandButton1_Click () 
Dim example As Range
Set example = Range("A1:C4")
example.Value = 8 
End Sub

Cách sử dụng VBA trong Excel

Kết quả của đoạn mã trên sẽ trả về như hình dưới đây:

Cách sử dụng VBA trong Excel

Select 

Một phương thức quan trọng của đối tượng Range là phương thức Select. Phương thức Select chỉ đơn giản là chọn một phạm vi.

Tương tự bạn có thể sử dụng đoạn mã sau:

Dim example As Range
Set example = Range("A1:C4")
example.Select 

Kết quả sẽ trả về như hình dưới đây:

Cách sử dụng VBA trong Excel

Lưu ý: Để chọn các ô trên một trang tính khác (worksheet), trước tiên bạn phải kích hoạt trang tính này. Ví dụ, các dòng mã sau đây sẽ chọn ô B7 trên trang tính thứ ba từ bên trái.

Worksheets(3).Activate
Worksheets(3).Range("B7").Select

Hàng (Rows)

Thuộc tính Rows cho phép truy cập vào một hàng cụ thể của một dải ô.

Bạn có thể sử dụng đoạn mã sau:

Dim example As Range
Set example = Range("A1:C4")
example.Rows(3).Select

Kết quả sẽ trả về như hình dưới đây:

Cách sử dụng VBA trong Excel

Cột (Columns)

Thuộc tính Columns cho phép truy cập vào một cột cụ thể của một dải ô.

Bạn có thể sử dụng đoạn mã sau:

Dim example As Range
Set example = Range("A1:C4")
example.Columns(2).Select

Kết quả sẽ trả về như hình dưới đây:

Cách sử dụng VBA trong Excel

Copy/Paste

Phương pháp Copy và Paste được sử dụng để sao chép một dải ô và dán vào một nơi khác trên trang tính.

Bạn có thể sử dụng đoạn mã sau:

Range("A1:A2").Select
Selection.Copy
Range("C3").Select
ActiveSheet.Paste

Kết quả sẽ trả về như hình dưới đây:

Cách sử dụng VBA trong Excel

Mặc dù điều này được cho phép trong Excel VBA, nhưng tốt hơn nhiều là sử dụng dòng mã bên dưới để làm chính xác như vậy.

Range("C3:C4").Value = Range("A1:A2").Value

Xóa (Clear)

Để xóa nội dung của một phạm vi Excel, bạn có thể sử dụng phương pháp ClearContents với mã cực kỳ đơn giản sau:

Range("A1").ClearContents

Hoặc đơn giản là sử dụng mã:

Range("A1").Value = ""

Lưu ý: Sử dụng phương pháp Clear để xóa nội dung và định dạng của một dải ô. Sử dụng phương pháp ClearFormats để chỉ xóa định dạng.

Đếm (Count)

Với thuộc tính Count, bạn có thể đếm số ô, hàng và cột của một phạm vi.

Cách sử dụng VBA trong Excel

Bạn có thể sử dụng đoạn mã sau:

Dim example As Range
Set example = Range("A1:C4")
MsgBox example.Count

Kết quả trả về sẽ là bảng thông báo sau hiển thị:

Cách sử dụng VBA trong Excel

Hoặc cũng có thể sử dụng mã sau:

Dim example As Range
Set example = Range("A1:C4")
MsgBox example.Rows.Count

Kết quả trả về sẽ như hình dưới đây:

Cách sử dụng VBA trong Excel

Lưu ý: Theo cách tương tự, bạn có thể đếm số cột của một phạm vi.

Lưu ý: Những đoạn mã chỉ có mình phần mã chính. Bạn phải nhập các đoạn mã đó nằm giữa Private Sub CommandButton1_Click() và End Sub để có được một mã VBA hoàn chỉnh.

Xem thêm:  Hướng dẫn các phép toán trong VBA: Phép nhân, phép chia, phép cộng, mô đun


Variables (Biến)

Ở phần này của bài viết, Gitiho sẽ hướng dẫn các bạn cách khai báo, khởi tạo và hiển thị một biến trong Excel VBA. Việc cho phép Excel VBA biết bạn đang sử dụng một biến được gọi là khai báo một biến. Khởi tạo đơn giản có nghĩa là gán giá trị bắt đầu (ban đầu) cho một biến.

Đặt một nút lệnh trên trang tính của bạn và thêm các dòng mã bên dưới. Để thực hiện các dòng mã, hãy bấm vào nút lệnh trên trang tính.

Số nguyên (Integer)

Biến số nguyên được sử dụng để lưu trữ số nguyên.

Đặt một nút lệnh trên trang tính của bạn và nhập vào các dòng mã sau vào cửa sổ Visual Basic Editor:

Dim x As Integer
x = 6
Range("A1").Value = x

Mã đầy đủ phải nhập sẽ là 

Private Sub CommandButton1_Click () 
Dim x As Integer
x = 6
Range("A1").Value = x
End Sub

Kết quả khi bạn bấm vào nút lệnh trên trang tính sẽ hiển thị như hình dưới đây:

Cách sử dụng VBA trong Excel

Giải thích: Dòng mã đầu tiên sẽ khai báo một biến có tên x kiểu Integer. Tiếp theo, chúng ta khởi tạo x với giá trị 6. Cuối cùng ghi giá trị của x vào ô A1.

Chuỗi (String)

Biến chuỗi được sử dụng để lưu trữ văn bản.

Đoạn mã cụ thể như sau:

Dim book As String
book = "bible"
Range("A1").Value = book

Kết quả trả về sẽ như hình ảnh dưới đây:

Cách sử dụng VBA trong Excel

Giải thích: Dòng mã đầu tiên khai báo một biến có sổ tên kiểu String. Tiếp theo, khởi tạo sách bằng văn bản. Luôn sử dụng dấu nháy đơn để khởi tạo biến String. Cuối cùng, ghi văn bản của sổ biến vào ô A1.

Gấp đôi (Double)

Một biến kiểu Double chính xác hơn một biến kiểu Integer và cũng có thể lưu số sau dấu phẩy.

Đoạn mã cụ thể như sau:

Dim x As Integer
x = 5.5
MsgBox "value is " & x

Kết quả bảng thông báo sau sẽ hiển thị:

Cách sử dụng VBA trong Excel

Nhưng đó không phải là giá trị phù hợp. Vì chúng tôi khởi tạo biến với giá trị 5.5 và nhận được giá trị 6. Những gì chúng tôi cần là một biến kiểu Double vì vậy mã sẽ như sau:

Dim x As Double
x = 5.5
MsgBox "value is " & x

Kết quả trả về sẽ là bảng thông báo sau:

Cách sử dụng VBA trong Excel

Boolean

Sử dụng biến Boolean để giữ giá trị True hoặc False.

Đoạn mã cụ thể như sau:

Dim continue As Boolean
continue = True
If continue = True Then MsgBox "Boolean variables are cool"

Kết quả trả về sẽ là bảng thông báo sau:

Cách sử dụng VBA trong Excel

Giải thích: Dòng đầu tiên khai báo một biến có tên là kiểu Boolean. Tiếp theo, chúng ta khởi tạo continue với giá trị True. Cuối cùng, sử dụng biến Boolean để chỉ hiển thị MsgBox nếu biến giữ giá trị True.

Lưu ý: Những đoạn mã chỉ có mình phần mã chính. Bạn phải nhập các đoạn mã đó nằm giữa Private Sub CommandButton1_Click() và End Sub để có được một mã VBA hoàn chỉnh.

Xem thêm: Hướng dẫn cách tùy biến comment trong Excel bằng VBA (Phần 1)

Câu lệnh If Then

Sử dụng câu lệnh If Then trong Excel VBA để thực thi các dòng mã nếu một điều kiện cụ thể được đáp ứng.

Câu lệnh If Then

Đầu tiên bạn đặt một nút lệnh VBA trên trang tính (thực hiện như phần đầu Cách tạo Macro trong Excel) của bạn và nhập vào các dòng mã sau:

Dim score As Integer, result As String
score = Range("A1").Value
If score >= 60 Then result = "pass"
Range("B1").Value = result

Mã đầy đủ phải nhập sẽ là 

Private Sub CommandButton1_Click () 
Dim score As Integer, result As String
score = Range("A1").Value
If score >= 60 Then result = "pass"
Range("B1").Value = result
End Sub

Giải thích: Nếu phạm vi ô A1 lớn hơn hoặc bằng 60, Excel VBA sẽ trả về kết quả Pass (Đạt).

Kết quả khi bạn bấm vào nút lệnh trên trang tính sẽ hiển thị như hình dưới đây:

Cách sử dụng VBA trong Excel

Lưu ý: Nếu phạm vi ô A1 nhỏ hơn 60, Excel VBA sẽ đặt giá trị của kết quả trống vào ô B1.

Else Statement

Đặt một nút lệnh trên trang tính của bạn và thêm các dòng mã sau:

Dim score As Integer, result As String
score = Range("A1").Value
If score >= 60 Then
    result = "pass"
Else
    result = "fail"
End If
Range("B1").Value = result

Giải thích: Nếu phạm vi ô A1 lớn hơn hoặc bằng 60, Excel VBA trả về kết quả là Pass (Đậu), nếu không Excel VBA trả về kết quả là Fail (Trượt).

Kết quả khi bạn bấm vào nút lệnh trên trang tính sẽ hiển thị như hình dưới đây:

Cách sử dụng VBA trong Excel

Lưu ý: Chỉ khi bạn có một dòng mã sau câu lệnh Then và no Else statement thì mới được phép đặt một dòng mã ngay sau Then và bỏ qua (bỏ đi) End If (ví dụ đầu tiên). Nếu không, hãy bắt đầu một dòng mới sau các từ Then và Else và kết thúc bằng End If (ví dụ thứ hai).

Lưu ý: Những đoạn mã chỉ có mình phần mã chính. Bạn phải nhập các đoạn mã đó nằm giữa Private Sub CommandButton1_Click() và End Sub để có được một mã VBA hoàn chỉnh.

Xem thêm: Hướng dẫn cách tùy biến comment trong Excel bằng VBA (Phần 2)

Vòng lặp Loop

Looping (vòng lặp) là một trong những kỹ thuật lập trình mạnh mẽ nhất. Nó là quá trình lặp lại 1 đoạn mã theo một số lần nhất định trong VBA. Ưu điểm của nó là giúp giảm thời gian của những việc phải thực hiện lặp đi lặp lại nhiều lần như in ấn hàng loạt Hóa đơn, phiếu thu, phiếu chi … với một mẫu phiếu duy nhất.

Single Loop (Vòng lặp đơn)

Bạn có thể sử dụng một vòng lặp đơn để lặp qua phạm vi ô một chiều.

Bạn có thể đặt một nút lệnh trên trang tính của mình và nhập vào các dòng mã sau:

Dim i As Integer
For i = 1 to 6
    Cells (i, 1) .Value = 100
Next i

Mã đầy đủ phải nhập sẽ là 

Private Sub CommandButton1_Click () 
Dim i As Integer
For i = 1 to 6
    Cells (i, 1) .Value = 100
Next i
End Sub

Kết quả khi bạn bấm vào nút lệnh trên trang tính sẽ hiển thị như hình dưới đây:

Cách sử dụng VBA trong Excel

Giải thích: Các dòng mã giữa For và Next sẽ được thực thi sáu lần. Với i = 1, Excel VBA nhập giá trị 100 vào ô ở giao điểm của hàng 1 và cột 1. Khi Excel VBA đến Next i, nó tăng i với 1 và nhảy trở lại câu lệnh For. Đối với i = 2, Excel VBA nhập giá trị 100 vào ô ở giao điểm của hàng 2 và cột 1 …

Lưu ý: Nên sử dụng phím tab để tạo thụt lề cho mã giữa các từ For và Next. Điều này sẽ giúp cho mã của bạn dễ đọc hơn.

Double Loop (Vòng lặp kép)

Khi chúng ta cần thực hiện nhiều vòng lặp lồng nhau trong cùng 1 câu lệnh VBA, khi đó chúng ta cần sử dụng vòng lặp kép.

Bạn có thể đặt một nút lệnh trên trang tính của mình và nhập vào các dòng mã sau:

Dim i As Integer , j As Integer
For i = 1 To 6
    For j = 1 To 2
        Cells (i, j) .Value = 100
    Next j
Next i

Kết quả khi bạn bấm vào nút lệnh trên trang tính sẽ hiển thị như hình dưới đây:

Cách sử dụng VBA trong Excel

Giải thích: Với i = 1 và j = 1, Excel VBA nhập giá trị 100 vào ô ở giao điểm của hàng 1 và cột 1. Khi Excel VBA đến Next j, nó tăng j với 1 và nhảy trở lại câu lệnh For j. Đối với i = 1 và j = 2, Excel VBA nhập giá trị 100 vào ô ở giao điểm của hàng 1 và cột 2. 

Tiếp theo, Excel VBA bỏ qua Next j vì j chỉ chạy từ 1 đến 2. Khi Excel VBA đến Next i, nó tăng i với 1 và nhảy trở lại câu lệnh For i. Đối với i = 2 và j = 1, Excel VBA nhập giá trị 100 vào ô ở giao điểm của hàng 2 và cột 1 …

Triple Loop (Vòng lặp ba)

Bạn có thể sử dụng một vòng lặp ba để lặp qua các phạm vi hai chiều trên nhiều trang tính Excel.

Đặt một nút lệnh trên trang tính của bạn và nhập vào các dòng mã sau vào cửa sổ Visual Basic Editor:

Dim c As Integer, i As Integer, j As Integer
For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

Giải thích: Thay đổi duy nhất được thực hiện so với mã cho vòng lặp kép là chúng tôi đã thêm một vòng lặp nữa và thêm Worksheets(c). Ở phía trước Cells để lấy phạm vi hai chiều trên sheet đầu tiên cho c = 1, sheet thứ hai cho c = 2 và sheet thứ ba cho c = 3. 

Do While Loop

Bên cạnh vòng lặp For Next, còn có các vòng lặp khác trong Excel VBA. Ví dụ, vòng lặp Do While Loop. Mã được đặt giữa Do While và Loop sẽ được lặp lại miễn là phần sau Do While là đúng.

Bạn tiến hành đặt một nút lệnh trên trang tính của mình và nhập vào các dòng mã sau vào cửa sổ Visual Basic Editor:

Dim i As Integer
i = 1
Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

Kết quả khi bạn bấm vào nút lệnh trên trang tính sẽ hiển thị như hình dưới đây:

Cách sử dụng VBA trong Excel

Giải thích: Miễn là i nhỏ hơn 6, Excel VBA nhập giá trị 20 vào ô ở giao điểm của hàng i và cột 1 và tăng i lên 1. Trong Excel VBA (và trong các ngôn ngữ lập trình khác), ký hiệu '= 'nghĩa là trở thành. Nó không có nghĩa là bình đẳng. Vì vậy, i = i + 1 có nghĩa là i trở thành i + 1. 

Nói cách khác lấy giá trị hiện tại của i và thêm 1 vào nó. Ví dụ: nếu i = 1, i trở thành 1 + 1 = 2. Kết quả là giá trị 20 sẽ được đặt vào cột A năm lần (không phải 6 vì Excel VBA dừng khi kết quả bằng 6).

(Còn tiếp)

Trên đây Gitiho vừa giới thiệu với các bạn Phần 1 của bài viết Tìm hiểu về VBA và cách sử dụng cơ bản nhất trong Excel. Hãy tiếp tục theo dõi các bài viết tiếp theo của chúng tôi để tiếp tục tìm hiểu về VBA nhé. Chúc các bạn thành công!.

Thời đại công nghệ 4.0 đang dần đi vào cuộc sống đòi hỏi mọi người phải tự trang bị kiến thức tin học cho phù hợp để có thể bắt kịp nhưng thay đổi nhanh chóng này. Chẳng ai khác ngoài bạn hiểu mình cần trang bị thêm kiến thức gì. Hãy tìm hiểu ngay TẠI ĐÂY những khóa học hấp dẫn, có tính thực tế cao của Gitiho và đăng ký nhận tư vấn ngay hôm nay.

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

Bài viết liên quan

Hướng dẫn về một số hàm DAX căn bản trong Power Pivot (Phần 2)

Hướng dẫn về một số hàm DAX căn bản trong Power Pivot (Phần 2)

Hướng dẫn cách phân biệt Data Table với Lookup Table trong Power Pivot

Hướng dẫn cách phân biệt Data Table với Lookup Table trong Power Pivot

Hướng dẫn cách mở thẻ Power Pivot trên thanh Menu của Excel

Hướng dẫn cách mở thẻ Power Pivot trên thanh Menu của Excel

Hướng dẫn cách phân biệt giữa Power Pivot và Pivot Table

Hướng dẫn cách phân biệt giữa Power Pivot và Pivot Table

Hướng dẫn cách kết nối các bảng trong Power Pivot

Hướng dẫn cách kết nối các bảng trong Power Pivot

Hướng dẫn cách đổi tên bảng và tên cột trong Power Pivot

Hướng dẫn cách đổi tên bảng và tên cột trong Power Pivot

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội