/ / VBA EXCEL – Bài 15. Cách dùng Array trong Sub và Function – Bui The Tam

VBA EXCEL – Bài 15. Cách dùng Array trong Sub và Function – Bui The Tam



Bài 10. Cấu trúc With … End With, While … Wend, Const
Bài 11. Lệnh Goto, Gosub, On Goto, On Gosub
Bài 12. Định nghĩa kiểu dữ liệu Type … End Type
Bài 13. Cách dùng mảng Array
Bài 14. Các phương thức của Array
Nội dung bài 15:
1/ Có thể truyền một mảng vào subroutine hay function, mảng luôn truyền theo ByRef (các thay đổi của mảng trong chương trình con được giữ nguyên khi ra khỏi chương trình con). Ta có thể truyền cả mảng tĩnh và mảng động vào Sub và Function
2/ Nếu đối số của Sub/ Function khai là Variant ta có thể truyền mảng vào chương trình con kiểu bất kỳ.
Public Sub AnyDataType(ByRef X As Variant)
Function SumBP(List) As Double
3/ Giá trị trả về của hàm có thể là một mảng

Similar Posts

4 Comments

  1. Public Sub MangCong(ByRef X() As Long)

    Dim i As Integer

    For i = LBound(X) To UBound(X)

    X(i) = X(i) + 5000

    Next

    End Sub

    Public Sub TestMangTinh() ' truyen mang tinh vao Sub

    Dim A(1 To 5) As Long, i As Integer

    For i = LBound(A) To UBound(A)

    A(i) = 1000 + i

    Next

    Call MangCong(A)

    For i = LBound(A) To UBound(A)

    MsgBox A(i)

    Next

    End Sub

  2. Function TenCacThang() ' Ham tra ve 1 MANG

    TenCacThang = Array("Gieng", "Hai", "Ba", "Tu", "Nam", "Sau", "Bay", "Tam", "Chin", "Muoi", "Mot", "Chap")

    End Function

    Sub TestTenCacThang()

    Dim i As Integer

    Dim B

    B = TenCacThang()

    For i = LBound(B) To UBound(B)

    MsgBox "Thang " & B(i)

    Next

    End Sub

  3. Function SumBP(List) As Double ' Doi cua ham la Mang, Vung o

    Dim X As Variant

    SumBP = 0

    For Each X In List

    If WorksheetFunction.IsNumber(X) Then

    SumBP = SumBP + X ^ 2

    End If

    Next

    End Function

    Sub TestSumBP()

    Dim A(1 To 100) As Double, i As Integer

    For i = 1 To 100

    A(i) = 50 + i

    Next

    MsgBox "Ket qua 1 = " & SumBP(A) ' ham con dung tren vung o

    End Sub

Leave a Reply

Your email address will not be published. Required fields are marked *