Vba: cara mengembalikan array dari suatu fungsi


Anda dapat menggunakan sintaks dasar berikut untuk mengembalikan array dari suatu fungsi di VBA:

 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

Contoh khusus ini menghasilkan tiga bilangan bulat acak, menyimpannya dalam array, dan kemudian mengembalikan array tersebut sebagai hasil dari fungsi yang disebut GenerateRandom() .

Contoh berikut menunjukkan cara mengembalikan nilai dari fungsi ini dengan dua cara berbeda:

  • Kembalikan nilai ke kotak pesan
  • Kembalikan nilai dalam sel

Ayo pergi!

Contoh 1: Mengembalikan array dari suatu fungsi dan menampilkan nilainya di kotak pesan

Kita dapat menggunakan sintaks berikut untuk membuat fungsi bernama GenerateRandom() yang menghasilkan array tiga bilangan bulat acak, lalu menampilkan bilangan bulat tersebut dalam kotak pesan menggunakan fungsi MsgBox :

 '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

Saat kami menjalankan makro ini, kami menerima keluaran berikut:

VBA mengembalikan tabel fungsi

Kita dapat melihat bahwa fungsi tersebut mengembalikan bilangan bulat acak 96 , 87 dan 5 dalam kotak pesan.

Contoh 2: Mengembalikan array dari suatu fungsi dan menampilkan nilai dalam sel

Kita bisa menggunakan sintaks berikut untuk membuat fungsi bernama GenerateRandom() yang menghasilkan array tiga bilangan bulat acak dan kemudian menampilkan bilangan bulat yang dimulai dari sel A1 di Excel:

 '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

Saat kami menjalankan makro ini, kami menerima keluaran berikut:

Kita dapat melihat bahwa fungsi tersebut mengembalikan bilangan bulat acak 96 , 87 , dan 5 dari sel A1 lembar kerja kita.

Catatan : Untuk mengembalikan nilai tabel yang dimulai pada sel yang berbeda, cukup ganti A1 dalam kode dengan referensi sel yang berbeda.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di VBA:

Cara mengembalikan nilai dari fungsi VBA
Cara mendapatkan nilai sel dari sheet lain di VBA
Cara menggunakan IsNumeric untuk memeriksa apakah sel adalah angka di VBA

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *