Vba: วิธีคืนค่าอาร์เรย์จากฟังก์ชัน


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อส่งกลับอาร์เรย์จากฟังก์ชันใน 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

ตัวอย่างนี้สร้างจำนวนเต็มสุ่มสามจำนวน เก็บไว้ในอาร์เรย์ จากนั้นส่งคืนอาร์เรย์อันเป็นผลมาจากฟังก์ชันที่เรียกว่า GenerateRandom()

ตัวอย่างต่อไปนี้แสดงวิธีการคืนค่าจากฟังก์ชันนี้ในสองวิธี:

  • ส่งค่ากลับเข้ากล่องข้อความ
  • ส่งกลับค่าในเซลล์

ไปกันเถอะ!

ตัวอย่างที่ 1: ส่งกลับอาร์เรย์จากฟังก์ชันและแสดงค่าในกล่องข้อความ

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อสร้างฟังก์ชันที่เรียกว่า GenerateRandom() ซึ่งสร้างอาร์เรย์ของจำนวนเต็มสุ่มสามจำนวน จากนั้นแสดงจำนวนเต็มในกล่องข้อความโดยใช้ฟังก์ชัน 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

เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:

ตารางส่งคืน VBA ของฟังก์ชัน

เราจะเห็นว่าฟังก์ชันส่งคืนจำนวนเต็มสุ่ม 96 , 87 และ 5 ในกล่องข้อความ

ตัวอย่างที่ 2: ส่งกลับอาร์เรย์จากฟังก์ชันและแสดงค่าในเซลล์

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อสร้างฟังก์ชันที่เรียกว่า GenerateRandom() ซึ่งสร้างอาร์เรย์ของจำนวนเต็มสุ่มสามจำนวน จากนั้นแสดงจำนวนเต็มที่เริ่มต้นในเซลล์ A1 ใน 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

เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:

เราจะเห็นว่าฟังก์ชันส่งคืนจำนวนเต็มสุ่ม 96 , 87 และ 5 จากเซลล์ A1 ของแผ่นงานของเรา

หมายเหตุ : หากต้องการส่งคืนค่าตารางที่เริ่มต้นในเซลล์อื่น เพียงแทนที่ A1 ในโค้ดด้วยการอ้างอิงเซลล์อื่น

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:

วิธีการคืนค่าจากฟังก์ชัน VBA
วิธีรับค่าของเซลล์จากแผ่นงานอื่นใน VBA
วิธีใช้ IsNumeric เพื่อตรวจสอบว่าเซลล์เป็นตัวเลขใน VBA หรือไม่

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *