VBA İşlev Dönüş Dizisi

Bu makale, bir VBA İşlevi kullanarak bir Dizinin nasıl döndürüleceğini gösterecektir.

VBA İşlev Dönüş Dizisi

Dizileri döndürmek için işlevleri kullanırken, tür değişkenli dizileri bildirmenizi şiddetle tavsiye ederim:

123 Varyant Olarak ReturnArray() işleviBitiş İşlevi

Varyant Diziler ile çalışmak daha kolaydır. Dizi boyutu daha az endişe verici hale gelir.

İşlev Dönüş Dizisi Örnekleri

İşte bir dizi döndüren bir fonksiyon örneği:

1234567891011121314151617181920212223242526272829 Varyant Olarak ReturnArray() işleviVaryant Olarak Dim tempArr'Yeni Temp Dizisi OluşturReDim tempArr(1 - 3, 1 - 2)'Dizi Değerleri AtatempArr(1, 1) = "Steve"tempArr(1, 2) = "Johnson"tempArr(2, 1) = "Ryan"tempArr(2, 2) = "Johnson"tempArr(3, 1) = "Andrew"tempArr(3, 2) = "Scott"'Çıktı DizisiReturnArray = tempArrBitiş İşleviAlt TestTransposeArray()Dim outputArr As Varyant'Çağrı Dönüş İşlevioutputArr = ReturnArray()'Test ÇıktısıMsgBox çıktıArr(2, 1)Alt Bitiş

Boyut sorunlarından kaçınmak için Dizileri veri türü = değişken ile bildirdiğimize dikkat edin.

Bu örnek, bir diziyi girdi olarak alır, diziyi transpoze eder ve yeni transpoze diziyi çıkarır:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Varyant Olarak TransposeArray (Varyant Olarak MyArray) İşleviDim x Kadar Uzun, y Kadar UzunDim maxX Kadar Uzun, minX Kadar UzunDim maxY Kadar Uzun, minY Kadar UzunVaryant Olarak Dim tempArr'Üst ve Alt Sınırları AlınmaxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Yeni Temp Dizisi OluşturReDim tempArr(minX - maxX, minY - maxX)'Diziyi Aktarx = minX için maxX'ey = minY için maxY'yetempArr(y, x) = MyArray(x, y)sonraki yılSonraki x'Çıktı DizisiTransposeArray = tempArrBitiş İşleviAlt TestTransposeArray()Dim testArr(1 - 3, 1 - 2) As VariantDim outputArr As Varyant'Dizi Değerleri AtatestArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andrew"testArr(3, 2) = "Scott"'Çağrı Aktarma İşlevioutputArr = TransposeArray(testArr)'Test ÇıktısıMsgBox çıktıArr(2, 1)Alt Bitiş
wave wave wave wave wave