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ả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.

Để có 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 dấu 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ị các 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.

Bạn có thể tải xuống Mẫu VBA String Array Excel tại đây - Mẫu VBA String Array 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 () Là 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 truyề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 biến mảng và chúng tôi đã sử dụng hàm ARRAY, số mảng sẽ bắt đầu từ 0 chứ 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 tôi có thể quyết định như vậy 5 lần nhưng đó không phải là cách đúng để 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 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ư bên dưới.

Bangalore; Mumbai; Kolkata; Hydrabad; Orissa

Trong trường hợp này, tất cả các thành phố được kết hợp với nhau bằng dấu hai chấm phân cách mỗi thành phố. Trong những trường hợp như vậy, chúng ta cần sử dụng hàm SPLIT để tách từng thành phố.

Đối với Biểu thức cung cấp danh sách thành phố.

Mã:

 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 Phụ 

Đối số tiếp theo là “Dấu phân cách” tức là một ký tự ngăn cách mỗi thành phố với các thành phố khác, trong trường hợp này là “Dấu hai chấm”.

Mã:

 Sub String_Array_Example2 () Dim CityList () As String Dim k As Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", ";") Cho k = LBound (CityList) Tới UBound (CityList) MsgBox CityList (k ) Tiếp theo k Kết thúc 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 bạn muốn sử dụng hàm ARRAY không quyết định độ dài mảng.

$config[zx-auto] not found$config[zx-overlay] not found