Mảng chuỗi VBA - Làm thế nào để khai báo và khởi tạo mảng chuỗi trong Excel VBA?

Mảng chuỗi VBA trong Excel

Trong VBA, một mảng chuỗi không là gì ngoài một biến mảng có thể chứa nhiều hơn một giá trị chuỗi với một biến duy nhất.

Ví dụ, hãy xem mã VBA bên dưới.

Mã:

Sub String_Array_Example () Dim CityList (1 đến 5) As Variant CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa" MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5) End Sub

Trong đoạn mã trên, tôi đã khai báo là biến mảng và gán độ dài của mảng là 1 đến 5.

Dim CityList (1 đến 5) làm biến thể

Đối với biến mảng này, tôi đã gán 5 tên thành phố đề cập đến mỗi số mảng trong ngoặc đơn.

CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa"

Tiếp theo, tôi đã viết một mã để hiển thị những tên thành phố này trong hộp tin nhắn.

MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5)

Khi tôi chạy mã này, chúng tôi sẽ nhận được một hộp thông báo hiển thị tất cả các tên thành phố trong một hộp thông báo.

Tất cả chúng ta đều biết điều này đã tiết kiệm rất nhiều thời gian từ lịch trình của chúng ta bằng cách loại bỏ nhiệm vụ khai báo các biến riêng lẻ cho từng thành phố. Tuy nhiên, một điều nữa bạn cần tìm hiểu là chúng ta vẫn có thể giảm mã dòng chúng ta viết cho các giá trị chuỗi. Hãy xem cách chúng ta viết mã cho mảng chuỗi VBA.

Ví dụ về mảng chuỗi trong Excel VBA

Dưới đây là các ví dụ về mảng chuỗi VBA trong excel.

Ví dụ 1

Như chúng ta đã thấy trong đoạn mã trên, chúng ta biết rằng chúng ta có thể lưu trữ nhiều hơn một giá trị trong biến dựa trên kích thước mảng được xác định.

Bây giờ những gì chúng ta cần làm là không quyết định trước độ dài mảng.

Mã:

Sub String_Array_Example1 () Dim CityList () Như biến thể End Sub

Như bạn có thể thấy ở trên bên trong dấu ngoặc đơn, tôi không viết bất kỳ độ dài nào. Bây giờ đối với biến này, hãy chèn các giá trị bằng cách sử dụng hàm VBA ARRAY.

Bên trong Mảng chuyển các giá trị vào dấu ngoặc kép, mỗi giá trị được phân tách bằng dấu phẩy (,).

Mã:

Sub String_Array_Example () Dim CityList () As Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") End Sub

Bây giờ giữ lại mã cũ để hiển thị kết quả của tên thành phố trong hộp thông báo trong VBA.

Mã:

Sub String_Array_Example1 () Dim CityList () As Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") MsgBox CityList (0) & "," & CityList (1) & " , "& CityList (2) &", "& CityList (3) &", "& CityList (4) End Sub

Một thay đổi mà tôi đã thực hiện trong đoạn mã trên là vì chúng tôi chưa quyết định giới hạn dưới và giới hạn trên của một biến mảng và chúng tôi đã sử dụng hàm ARRAY, số mảng sẽ bắt đầu từ 0, không phải từ 1.

Vì vậy, đó là lý do chúng tôi đã đề cập đến các giá trị như CityList (0), ClityList (1), CityList (2), CityList (3) và CityList (4).

Bây giờ chạy mã thông qua phím tắt F5 của excel hoặc theo cách thủ công. Chúng tôi nhận được kết quả tương tự như chúng tôi nhận được từ mã trước đó.

Ví dụ số 2

Mảng chuỗi VBA với các hàm LBOUND & UBOUND

Trong trường hợp nếu bạn không muốn hiển thị tất cả danh sách thành phố trong một hộp thông báo, thì bạn cần bao gồm các vòng lặp, hãy xác định thêm một biến nữa cho các vòng lặp.

Bây giờ để bao gồm vòng lặp FOR NEXT, chúng tôi không chắc chúng tôi cần chạy mã bao nhiêu lần. Trong trường hợp này, chúng ta có thể quyết định như vậy 5 lần, nhưng đó không phải là cách đúng đắn để tiếp cận vấn đề. Vì vậy, làm thế nào về ý tưởng của tự động định danh độ dài mảng cấp thấp hơn và cao hơn ???

Khi chúng tôi mở vòng lặp FOR NEXT, chúng tôi thường quyết định độ dài vòng lặp là 1 đến 5 hoặc 1 đến 10 tùy thuộc vào tình huống. Thay vì nhập các số theo cách thủ công, hãy sử dụng hàm LBOUND và UBOUND để tự động quyết định giá trị dưới và giá trị trên.

Đối với LBound và Ubound, tôi đã cung cấp một tên mảng, tức là CityList. VBA LBound xác định giá trị dưới của biến mảng và hàm VBA UBound xác định giá trị trên của biến mảng.

Bây giờ hiển thị giá trị trong hộp thông báo, thay vì chèn số sê-ri, hãy để biến vòng lặp “k” tự động nhận giá trị mảng.

Mã:

Sub String_Array_Example1 () Dim CityList () As Variant Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") Đối với k = LBound (CityList) Đến UBound (CityList) MsgBox CityList (k) Tiếp theo k End Sub

Bây giờ hộp thông báo sẽ hiển thị tên từng thành phố riêng biệt.

Ví dụ # 3

Mảng chuỗi VBA với chức năng tách

Bây giờ giả sử bạn có tên thành phố như dưới đây.

Bangalore; Mumbai; Kolkata; Hydrabad; Orissa

In this case, all the cities are combined together with the colon separating each city. In such cases, we need to use the SPLIT function to separate each city.

For Expression, supply the city list.

Code:

Sub String_Array_Example2() Dim CityList() As String Dim k As Integer CityList = Split("Bangalore;Mumbai;Kolkata;Hydrabad;Orissa", For k = LBound(CityList) To UBound(CityList) MsgBox CityList(k) Next k End Sub

The next argument is “Delimiter,” i.e., what is the one character that is separating each city from other cities. In this case, “Colon.”

Code:

Sub String_Array_Example2() Dim CityList() As String Dim k As Integer CityList = Split("Bangalore;Mumbai;Kolkata;Hydrabad;Orissa", ";") For k = LBound(CityList) To UBound(CityList) MsgBox CityList(k) Next k End Sub

Bây giờ các giá trị tách của hàm SPLIT cũng xác định độ dài mảng cao nhất.

Những điều cần ghi nhớ

  • LBOUND và UBOUND là các hàm để xác định độ dài của mảng.
  • Hàm ARRAY có thể chứa nhiều giá trị cho một biến đã khai báo.
  • Một khi nếu bạn muốn sử dụng hàm ARRAY, đừng quyết định độ dài mảng.

thú vị bài viết...