ByRef và ByVal truyền tham chiếu và giá trị trong VBA

Cdoe vba về ByRef và ByVal truyền tham chiếu và giá trị trong VBA

Hướng dẫn byVal truyền tham chiếu và giá trị trong VBA

Ví dụ 1: có sử dụng ByRef VBA
Private Sub Command0_Click()
Dim so As Integer
so = 50
MsgBox so ' gia tri ban dau
CongThem so
MsgBox so ' dòng *
End Sub
Sub CongThem(ByRef k As Integer)
k = k + 10
End Sub

* Thông thường thì  ' dòng * sẽ in là 50, nhưng khi có byRef biến số được + 10 vì ByRef đã tham chiếu biến thay đổi giá trị

Ví dụ 2: có sử dụng ByVal VBA
Private Sub Command0_Click()
Dim so As Integer
so = 50
MsgBox so ' gia tri ban dau
CongThem so
MsgBox so ' dòng *
End Sub
Sub CongThem(ByVal k As Integer)
k = k + 10
End Sub

Kết quả là 50 chứ không giúp ví dụ 1, suy ra là khi gọi hàm hay thủ tục cần thay đổi giá trị biến truyền vào hãy sử dụng byRef