İçindekiler
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ş |