Mục lục
Bài viết này sẽ trình bày cách trả về một Mảng bằng cách sử dụng Hàm VBA.
Mảng trả về hàm VBA
Khi sử dụng các hàm để trả về mảng, tôi thực sự khuyên bạn nên khai báo mảng với kiểu biến thể:
123 | Hàm ReturnArray () As VariantChức năng kết thúc |
Mảng biến thể dễ làm việc hơn. Kích thước mảng trở nên ít quan tâm hơn.
Ví dụ về mảng trả về hàm
Đây là một ví dụ về một hàm trả về một mảng:
1234567891011121314151617181920212223242526272829 | Hàm ReturnArray () As VariantDim tempArr As Variant'Tạo mảng nhiệt độ mớiReDim tempArr (1 đến 3, 1 đến 2)'Chỉ định giá trị mảngtempArr (1, 1) = "Steve"tempArr (1, 2) = "Johnson"tempArr (2, 1) = "Ryan"tempArr (2, 2) = "Johnson"tempArr (3, 1) = "Andrew"tempArr (3, 2) = "Scott"'Mảng đầu raReturnArray = tempArrChức năng kết thúcSub TestTransposeArray ()Dim outputArr As Variant'Chức năng Trả lời Cuộc gọioutputArr = ReturnArray ()'Kiểm tra đầu raMsgBox outputArr (2, 1)Kết thúc Sub |
Lưu ý rằng chúng tôi đã khai báo Mảng với kiểu dữ liệu = biến thể để tránh các vấn đề về kích thước.
Ví dụ này lấy một mảng làm đầu vào, chuyển vị mảng và xuất ra mảng đã chuyển vị mới:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Hàm TransposeArray (MyArray As Variant) As VariantDim x As Long, y As LongDim maxX As Long, minX As LongDim maxY As Long, minY As LongDim tempArr As Variant'Lấy trên và dưới giới hạnmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Tạo mảng nhiệt độ mớiReDim tempArr (minX Tới maxX, minY To maxX)'Chuyển đổi mảngĐối với x = minX Đến maxXĐối với y = minY Đến maxYtempArr (y, x) = MyArray (x, y)Tiếp theo yTiếp theo x'Mảng đầu raTransposeArray = tempArrChức năng kết thúcSub TestTransposeArray ()Dim testArr (1 đến 3, 1 đến 2) làm biến thểDim outputArr As Variant'Chỉ định giá trị mảngtestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"'Chức năng Transpose cuộc gọioutputArr = TransposeArray (testArr)'Kiểm tra đầu raMsgBox outputArr (2, 1)Kết thúc Sub |