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
❮ ❯

Mảng (Array) trong VBA


Khối lệnh With-End With trong VBA
Collection trong VBA

Mảng (Array) trong VBA được sử dụng để lưu trữ nhiều giá trị trong một biến duy nhất tại một thời điểm. Khi một loạt các giá trị được lưu trữ trong một biến duy nhất, thì nó được gọi là biến mảng.


Nội dung chính

  • 1. Khai báo mảng trong VBA
  • 2. Gán giá trị cho mảng
  • 3. Mảng đa chiều trong VBA
  • 4. Mảng động trong VBA
  • 5. Các phương thức xử lý mảng trong VBA
    • Phương thức LBound
    • Phương thức UBound
    • Phương thức Split
    • Phương thức Join
    • Phương thức Filter
    • Phương thức IsArray
    • Phương thức Erase

1. Khai báo mảng trong VBA

Mảng được khai báo giống như một biến kết hợp sử dụng dấu ngoặc đơn.


' Method 1: khai báo mảng không kích thước
Dim arr1()

' Method 2: khai báo mảng có kích thước
Dim arr2(5)

' Method 3: Sử dụng phương thức Array
Dim arr3
arr3 = Array("Java","C++","PHP")

' Method 4: chỉ định rõ kiểu giá trị của mảng
Dim arr4() As String

Các tính chất của mảng trong VBA

  • Chỉ số mảng không được âm.
  • Chỉ số mảng bắt đầu từ 0 (ZERO).
  • Các mảng VBA có thể lưu trữ bất kỳ loại biến nào trong một mảng. Do đó, một mảng có thể lưu trữ một số nguyên, chuỗi hoặc các ký tự trong một biến mảng.


2. Gán giá trị cho mảng

Các giá trị được gán cho mảng bằng cách chỉ định một giá trị chỉ số mảng với mỗi một giá trị được gán.

  • TH không chỉ định rõ kiểu giá trị của mảng khi khai báo thì mảng có thể lưu giá trị bất kỳ.
  • TH chỉ định rõ kiểu giá trị của mảng khi khai báo thì mảng chỉ có thể lưu kiểu giá trị đó.
Ví dụ

Sub arrayExample1()
    Dim i As Integer
    Dim arr(5)             ' Khai bao mang
    arr(0) = "1"           ' String
    arr(1) = "VBScript"    ' String
    arr(2) = 100           ' Number
    arr(3) = 2.45          ' Decimal Number
    arr(4) = #10/7/2013#   ' Date
    arr(5) = #12:45:00 PM# ' Time
    
    ' duyet cac phan tu cua mang
    For i = 0 To UBound(arr)
        MsgBox ("Gia tri duoc luu trong Array co index " & i & ": " & arr(i))
    Next i
End Sub

Kết quả:

Gia tri duoc luu trong Array co index 0: 1
Gia tri duoc luu trong Array co index 1: VBScript
Gia tri duoc luu trong Array co index 2: 100
Gia tri duoc luu trong Array co index 3: 2.45
Gia tri duoc luu trong Array co index 4: 7/10/2013
Gia tri duoc luu trong Array co index 5: 12:45:00 PM

3. Mảng đa chiều trong VBA

Mảng trong VBA không chỉ giới hạn trong một chiều, mà chúng có thể có tối đa 60 chiều. Các mảng hai chiều là những mảng được sử dụng phổ biến nhất.

Ví dụ

Sub arrayExample2()
   Dim arr(2, 3) As Variant ' mang arr co 3 hang va 4 cot
   arr(0, 0) = "Apple"
   arr(0, 1) = "Orange"
   arr(0, 2) = "Grapes"
   arr(0, 3) = "pineapple"
   arr(1, 0) = "cucumber"
   arr(1, 1) = "beans"
   arr(1, 2) = "carrot"
   arr(1, 3) = "tomato"
   arr(2, 0) = "potato"
   arr(2, 1) = "sandwitch"
   arr(2, 2) = "coffee"
   arr(2, 3) = "nuts"
           
   MsgBox ("Gia tri duoc luu trong Array co index 0,1: " & arr(0, 1))
   MsgBox ("Gia tri duoc luu trong Array co index 2,2: " & arr(2, 2))
End Sub

Kết quả:

Gia tri duoc luu trong Array co index 0,1: Orange
Gia tri duoc luu trong Array co index 2,2: coffee


4. Mảng động trong VBA

Từ khóa ReDim được sử dụng để khai báo mảng động trong VBA và phân bổ hoặc tái phân bổ không gian lưu trữ.

Cú pháp

ReDim [Preserve] arrayName(new_size)

Trong đó:
Preserve: Một tham số tùy chọn, được sử dụng để bảo toàn dữ liệu trong một mảng hiện có khi bạn thay đổi kích thước của mảng.
arrayName: Một tham số bắt buộc, là tên của biến mảng.
new_size : Một tham số bắt buộc, cho biết kích thước của mảng.

Ví dụ

Trong ví dụ sau, một mảng đã được định nghĩa lại và các giá trị được bảo toàn khi kích thước hiện tại của mảng được thay đổi.


Sub arrayExample3()
   Dim a() As Variant
   Dim i As Integer
   
   ReDim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   ReDim Preserve a(7)
   For i = 3 To 7
   a(i) = i
   Next
  
   'hien thi cac phan tu cua mang a
   For i = 0 To UBound(a)
      MsgBox a(i)
   Next
End Sub

Kết quả:

XYZ
41.25
22
3
4
5
6
7
Lưu ý: Khi thay đổi kích thước mảng nhỏ hơn ban đầu, dữ liệu trong các phần tử đã loại bỏ sẽ bị mất.

5. Các phương thức xử lý mảng trong VBA

Có nhiều phương thức có sẵn trong VBA giúp các nhà phát triển xử lý các mảng một cách hiệu quả. Tất cả các phương thức được sử dụng kết hợp với các mảng được liệt kê dưới đây. Xem chi tiết bằng cách click vào tên của phương thức.

No. Mô tả chức năng
1 LBound

Trả về một số nguyên tương ứng với chỉ số nhỏ nhất của mảng đã cho.

2 UBound

Trả về một số nguyên tương ứng với chỉ số lớn nhất của mảng đã cho.

3 Split

Trả về một mảng chứa một số giá trị nhất định. Split dựa trên một dấu phân cách.

4 Join

Trả về một chuỗi có chứa một số lượng quy định của chuỗi con trong một mảng. Đây là một chức năng đối lập với phương thức Split.

5 Filter

Ttrả về một mảng chứa một tập hợp con của một mảng chuỗi đã cho dựa trên một tiêu chí lọc cụ thể.

6 IsArray

Trả về một giá trị boolean cho biết biến đầu vào có là mảng hay không.

7 Erase

Được sử dụng để giải phóng bộ nhớ được phân bổ cho các biến mảng.


Phương thức LBound

LBound trả về chỉ số nhỏ nhất của mảng được chỉ định. Do đó, LBound của mảng là ZERO.

Cú pháp

LBound(ArrayName[,dimension])

Trong đó:
ArrayName: Một tham số bắt buộc. Tham số này tương ứng với tên của mảng.
dimension: Một tham số tùy chọn. Nếu nó là '1', thì nó sẽ trả về giới hạn dưới của kích thước thứ nhất; nếu nó là '2', thì nó sẽ trả về giới hạn dưới của thứ hai, vv.

Ví dụ

Sub LBoundArrayExample()
    Dim arr(5) As Variant
    arr(0) = "1"           ' String
    arr(1) = "VBScript"    ' String
    arr(2) = 100           ' Number
    arr(3) = 2.45          ' Decimal Number
    arr(4) = #10/7/2013#   ' Date
    arr(5) = #12:45:00 PM# ' Time
    MsgBox ("Chi so nho nhat cu mang arr la: " & LBound(arr))
    
    ' TH mang da chieu:
    Dim arr2(3, 2) As Variant
    MsgBox ("Chi so nho nhat cua chieu dau tien cua mang arr2 la: " & _
        LBound(arr2, 1))
    MsgBox ("Chi so nho nhat cua chieu thu hai cua mang arr2 la: " & _
        LBound(arr2, 2))
End Sub

Kết quả:

Chi so nho nhat cu mang arr la: 0
Chi so nho nhat cua chieu dau tien cua mang arr2 la: 0
Chi so nho nhat cua chieu thu hai cua mang arr2 la: 0

Phương thức UBound

LBound trả về chỉ số lớn nhất của mảng được chỉ định. Do đó, giá trị này tương ứng với kích thước của mảng.

Cú pháp

UBound(ArrayName[,dimension])

Trong đó:
ArrayName: Một tham số bắt buộc. Tham số này tương ứng với tên của mảng.
dimension: Một tham số tùy chọn. Nếu nó là '1', thì nó sẽ trả về giới hạn dưới của kích thước thứ nhất; nếu nó là '2', thì nó sẽ trả về giới hạn dưới của thứ hai, vv.

Ví dụ

Sub UBoundArrayExample()
    Dim arr(5) As Variant
    arr(0) = "1"           ' String
    arr(1) = "VBScript"    ' String
    arr(2) = 100           ' Number
    arr(3) = 2.45          ' Decimal Number
    arr(4) = #10/7/2013#   ' Date
    arr(5) = #12:45:00 PM# ' Time
    MsgBox ("Chi so nho nhat cu mang arr la: " & UBound(arr))
    
    ' For MultiDimension Arrays :
    Dim arr2(3, 2) As Variant
    MsgBox ("Chi so nho nhat cua chieu dau tien cua mang arr2 la: " & _
        UBound(arr2, 1))
    MsgBox ("Chi so nho nhat cua chieu thu hai cua mang arr2 la: " & _
        UBound(arr2, 2))
End Sub

Kết quả:

Chi so nho nhat cu mang arr la: 5
Chi so nho nhat cua chieu dau tien cua mang arr2 la: 3
Chi so nho nhat cua chieu thu hai cua mang arr2 la: 2

Phương thức Split

Phương thức Split trả về một mảng có chứa một số giá trị cụ thể được phân chia dựa trên dấu phân cách.

Cú pháp

Split(expression[,delimiter[,count[,compare]]]) 

Trong đó:
Expression: Một tham số bắt buộc. Biểu thức chuỗi có thể chứa chuỗi với các dấu phân cách.
Delimiter: Một tham số tùy chọn. Tham số được sử dụng để chuyển đổi thành các mảng dựa trên dấu phân cách.
Count: Một tham số tùy chọn. Số lượng các chuỗi con được trả về, và nếu được chỉ định là -1, thì tất cả các chuỗi con được trả về.
Compare: Một tham số tùy chọn. Tham số này xác định phương thức so sánh nào sẽ được sử dụng.

  • 0 = vbBinaryCompare: Thực hiện phép so sánh nhị phân.
  • 1 = vbTextCompare - Thực hiện so sánh văn bản.

Ví dụ

Sub SplitArrayExample()
    Dim a As Variant
    Dim b As Variant
    
    ' phan tach chuoi thanh mang dua tren dau phan cach '$'
    a = Split("Red $ Blue $ Yellow", "$")
    b = UBound(a)
    
    For i = 0 To b
       MsgBox ("Gia tri trong mang co index " & i & " la:" & a(i))
    Next
End Sub

Kết quả:

Gia tri trong mang co index 0 la:Red 
Gia tri trong mang co index 0 la: Blue 
Gia tri trong mang co index 0 la: Yellow 

Phương thức Join

Phương thức Join trả về một chuỗi có chứa một số lượng quy định của chuỗi con trong một mảng. Đây là một chức năng đối lập với phương thức Split.

Cú pháp

Join(ArrayName[,delimiter]) 

Trong đó:
ArrayName: Một tham số bắt buộc. Một mảng có chứa các chuỗi con được nối.
Delimiter: Một tham số tùy chọn. Tham số được sử dụng để chuyển đổi thành các mảng dựa trên dấu phân cách.

Ví dụ

Sub JoinArrayExample()
    Dim a
    Dim b As String
    ' Join su dung dau phan cach space
    a = Array("Red", "Blue", "Yellow")
    b = Join(a)
    MsgBox ("Ket qua join khong su dung dau phan cach: b = " & b)
    
    ' Join su dung dau phan cach $
    b = Join(a, "$")
    MsgBox ("Ket qua join su dung dau phan cach '$': b = " & b)
End Sub

Kết quả:

Ket qua join khong su dung dau phan cach: b = Red Blue Yellow
Ket qua join su dung dau phan cach '$': b = Red$Blue$Yellow

Phương thức Filter

Phương thức Filter trả về một mảng chứa một tập hợp con của một mảng chuỗi đã cho dựa trên một tiêu chí lọc cụ thể.

Cú pháp

Filter(inputstrings,value[,include[,compare]]) 

Trong đó:
inputstrings: Một tham số bắt buộc. Tham số này tương ứng với mảng các chuỗi được tìm kiếm.
value: Một tham số bắt buộc. ham số này tương ứng với chuỗi để tìm kiếm đối với tham số đầu vào.
include: Một tham số tùy chọn. Đây là một giá trị Boolean, cho biết có trả lại các chuỗi con bao gồm hay loại trừ.
compare: Một tham số tùy chọn. Tham số này xác định phương thức so sánh nào sẽ được sử dụng.

  • 0 = vbBinaryCompare: Thực hiện phép so sánh nhị phân.
  • 1 = vbTextCompare - Thực hiện so sánh văn bản.

Ví dụ

Sub FilterArrayExample()
    Dim a, b, c, d As Variant
    
    a = Array("Red", "Blue", "Yellow")
    b = Filter(a, "B")
    c = Filter(a, "e")
    d = Filter(a, "Y")
    
    For Each x In b
       MsgBox ("Ket qua Filter 1: " & x)
    Next
    
    For Each y In c
       MsgBox ("Ket qua Filter 2: " & y)
    Next
    
    For Each z In d
       MsgBox ("Ket qua Filter 3: " & z)
    Next
End Sub

Kết quả:

Ket qua Filter 1: Blue
Ket qua Filter 2: Red
Ket qua Filter 2: Blue
Ket qua Filter 2: Yellow
Ket qua Filter 3: Yellow

Phương thức IsArray

Phương thức IsArray trả về một giá trị boolean cho biết biến đầu vào có là mảng hay không.

Cú pháp

IsArray(ArrayName)

Trong đó:
ArrayName: Một tham số bắt buộc. Tham số này tương ứng với tên của mảng.

Ví dụ

Sub IsArrayExample()
    Dim a, b As Variant
    a = Array("Red", "Blue", "Yellow")
    b = "12345"
    
    MsgBox ("a la mot mang: " & IsArray(a))
    MsgBox ("b la mot mang: " & IsArray(b))
End Sub

Kết quả:

a la mot mang: True
b la mot mang: False

Phương thức Erase

Phương thức Erase được sử dụng để đặt lại các giá trị của các mảng kích thước cố định và giải phóng bộ nhớ của mảng động. Nó hoạt động tùy thuộc vào loại mảng.

Cú pháp

Erase ArrayName

Trong đó:
ArrayName: Một tham số bắt buộc. Tham số này tương ứng với tên của mảng.

Ví dụ

Sub EraseArrayExample()
    Dim numArray(3)
    numArray(0) = "VBScript"
    numArray(1) = 1.05
    numArray(2) = 25
    numArray(3) = #4/23/2013#
    
    Dim dynamicArray()
    ReDim dynamicArray(9)   ' phan bo khong gian luu tru.
    
    Erase numArray          ' cac phan tu duoc khoi tao.
    Erase dynamicArray      ' giai phong bo nho duoc su dung boi array.
    
    ' tat ca cac gia tri da bi xoa
    MsgBox ("Gia tri thu nhat cua NumArray la: " & numArray(0))
    MsgBox ("Gia tri thu hai cua NumArray la: " & numArray(1))
    MsgBox ("Gia tri thu ba cua NumArray la: " & numArray(2))
    MsgBox ("Gia tri thu tu cua NumArray la: " & numArray(3))
End Sub

Kết quả:

Gia tri thu nhat cua NumArray la: 
Gia tri thu hai cua NumArray la: 
Gia tri thu ba cua NumArray la: 
Gia tri thu bon cua NumArray la: 

Khối lệnh With-End With trong VBA
Collection trong VBA

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?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 Excel

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