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
Theo mang nay ma dung nhân hệ số trong môn học rồi chia để lấy trung bình đuwjc không anh nhi
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
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
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