VBA Dynamic Array (Redim & Redim Preserve)

Hướng dẫn này sẽ trình bày cách sử dụng mảng động (redim và redim bảo tồn) trong VBA.

Mảng động

Mảng động là các mảng có thể thay đổi kích thước (trái ngược với mảng tĩnh, là tĩnh).

Để khai báo một mảng động, bạn khai báo mảng, nhưng bỏ qua kích thước mảng:

1 Dim strNames () Dưới dạng chuỗi

Sau đó, trước khi bạn có thể gán giá trị cho mảng của mình, bạn phải sử dụng Câu lệnh ReDim để đặt mảng thành kích thước mong muốn của bạn:

1 ReDim strNames (1 đến 3)

Bây giờ, bất cứ lúc nào bạn muốn thay đổi kích thước mảng của mình, chỉ cần sử dụng ReDim (hoặc ReDim Preserve như chúng ta sẽ tìm hiểu bên dưới).

Mảng biến thể động

Lưu ý: Mảng biến thể có một chút khác biệt. Với mảng biến thể, bạn không cần đặt kích thước mảng bằng ReDim trước khi gán giá trị.

12345678 Sub TestArray ()'khai báo biếnDim varNames () As Variant'điền vào mảngvarNames () = Array ("Fred", "Wilma", "Barney", "Betty")'trả lại các giá trịTham gia MsgBox (varNames, ",")Kết thúc Sub

Redim so với Redim Preserve

Các ReDim câu lệnh thay đổi kích thước một mảng, thanh toán bù trừ tất cả các giá trị hiện có.

Các Bảo tồn ReDim câu lệnh thay đổi kích thước một mảng, duy trì (“Bảo tồn”) tất cả các giá trị hiện có.

Sử dụng ReDim

Trong thực tế, thay đổi kích thước một mảng với ReDim trông giống như sau:

123456789101112 Sub TestReDim ()'khai báo mảng chuỗiDim strNames () Dưới dạng chuỗi'thay đổi kích thước mảng chuỗi để có thể chứa 3 giá trịReDim strNames (1 đến 3)'điền mảng với 3 tênstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'hiển thị kết quả trong cửa sổ ngay lập tứcDebug.Print Tham gia (strNames, vbCrLf)Kết thúc Sub

Sử dụng ReDim Preserve

Trong ví dụ này, chúng ta sẽ sử dụng ReDim để đặt mảng động ban đầu và sau đó ReDim Preserve để thay đổi kích thước mảng, duy trì các giá trị ban đầu:

1234567891011121314151617 Sub TestReDim ()'khai báo mảng chuỗiDim strNames () Dưới dạng chuỗi'thay đổi kích thước mảng chuỗi để có thể chứa 3 giá trịReDim strNames (1 đến 3)'điền vào mảngstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'hiển thị kết quả trong cửa sổ ngay lập tứcDebug.Print Tham gia (strNames, vbCrLf)'redim nhưng chọn trước dữ liệuReDim Bảo tồn strNames (1 đến 4)strNames (4) = "Fred"'hiển thị kết quả trong cửa sổ ngay lập tứcDebug.Print Tham gia (strNames, vbCrLf)Kết thúc Sub

Nếu bạn không sử dụng BẢO TỒN , bạn sẽ mất dữ liệu đã có trong mảng trước đó.

Trong cửa sổ ngay phía trên, mảng có Mel, Steve và Bob. Khi được khai báo lại, nó sẽ loại bỏ các giá trị đó và thay vào đó trả về 3 giá trị trống và sau đó là giá trị ‘Fred’. Điều này là do BẢO TỒN tuyên bố bị bỏ qua.

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave