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 VBA dönüş tablosu

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?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir