Vba: bir işlevden bir dizi nasıl döndürülür
VBA’daki bir işlevden bir dizi döndürmek için aşağıdaki temel sözdizimini kullanabilirsiniz:
Function GenerateRandom() As Integer()
Dim RandValues(2) As Integer
'generate three random integers and store them in array
RandValues(0) = Int(Rnd * 100)
RandValues(1) = Int(Rnd * 100)
RandValues(2) = Int(Rnd * 100)
'return array as a result of the function
GenerateRandom = RandValues
End Function
Bu özel örnek, üç rastgele tam sayı üretir, bunları bir dizide saklar ve ardından GenerateRandom() adı verilen işlevin bir sonucu olarak diziyi döndürür.
Aşağıdaki örnekler, bu işlevden değerlerin iki farklı şekilde nasıl döndürüleceğini göstermektedir:
- Değerleri bir mesaj kutusuna döndür
- Hücrelerdeki değerleri döndürme
Hadi gidelim!
Örnek 1: Bir fonksiyondan bir dizi döndürme ve değerleri mesaj kutusunda görüntüleme
Üç rastgele tam sayıdan oluşan bir dizi oluşturan GenerateRandom() adlı bir işlev oluşturmak ve ardından MsgBox işlevini kullanarak tam sayıları bir mesaj kutusunda görüntülemek için aşağıdaki sözdizimini kullanabiliriz:
'define function to generate array of three random integers
Function GenerateRandom() As Integer()
Dim RandValues(2) As Integer
RandValues(0) = Int(Rnd * 100)
RandValues(1) = Int(Rnd * 100)
RandValues(2) = Int(Rnd * 100)
GenerateRandom = RandValues
End Function
'define sub to display values from function in a message box
SubDisplayRandom ()
Dim WS As Worksheet
Dim RandomValues() As Integer
Dim i As Integer
Set WS = Worksheets(" Sheet1 ")
RandomValues = GenerateRandom()
j = " Array values: "
For i = 0 To 2
j = (j & RandomValues(i) & " ")
Next i
MsgBox j
End Sub
Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
Fonksiyonun bir mesaj kutusunda 96 , 87 ve 5 rastgele tamsayılarını döndürdüğünü görebiliriz.
Örnek 2: Bir işlevden bir dizi döndürme ve hücrelerdeki değerleri görüntüleme
Üç rastgele tam sayıdan oluşan bir dizi oluşturan ve ardından Excel’de A1 hücresinden başlayan tam sayıları görüntüleyen GenerateRandom() adlı bir işlev oluşturmak için aşağıdaki sözdizimini kullanabiliriz:
'define function to generate array of three random integers
Function GenerateRandom() As Integer()
Dim RandValues(2) As Integer
RandValues(0) = Int(Rnd * 100)
RandValues(1) = Int(Rnd * 100)
RandValues(2) = Int(Rnd * 100)
GenerateRandom = RandValues
End Function
'define sub to display values from function starting in cell A1
SubDisplayRandom ()
Dim WS As Worksheet
Dim RandomValues() As Integer
Dim i As Integer
Set WS = Worksheets(" Sheet1 ")
RandomValues = GenerateRandom()
For i = 0 To 2
WS.Range(" A1 ").Offset(i, 0).Value = RandomValues(i)
Next i
End Sub
Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
Çalışma sayfamızın A1 hücresinden fonksiyonun 96 , 87 ve 5 rastgele tamsayılarını döndürdüğünü görebiliriz.
Not : Farklı bir hücreden başlayan tablo değerlerini döndürmek için koddaki A1’i farklı bir hücre referansıyla değiştirmeniz yeterlidir.
Ek kaynaklar
Aşağıdaki eğitimlerde VBA’da diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
VBA işlevinden değer nasıl döndürülür?
VBA’da bir hücrenin değeri başka bir sayfadan nasıl alınır?
VBA’da hücrenin bir sayı olup olmadığını kontrol etmek için IsNumeric nasıl kullanılır?