25/05/2018, 09:07

Truyền tham chiếu cho chương trình con

Không giống như truyền theo tham trị ở phần 5, nếu một chương trình con có làm thay đổi giá trị của tham số thực sự truyền vào và ta muốn giữ lại sự thay đổi này thì cần khai báo tham số hình thức ở dạng tham chiếu . Thực hành: Viết chương trình ...

Không giống như truyền theo tham trị ở phần 5, nếu một chương trình con có làm thay đổi giá trị của tham số thực sự truyền vào và ta muốn giữ lại sự thay đổi này thì cần khai báo tham số hình thức ở dạng tham chiếu.

Thực hành: Viết chương trình tăng giá trị của một số lên 1 đơn vị và hiển thị.

Hướng dẫn: Viết chương trình giống như phần 5, nhưng thay byVal bởi byRef (hoặc có thể xoá từ khoá byVal đứng trước)

Option Explicit

'/// Khai báo thủ tục với tham số ở dạng tham trị (Có từ khoá byVal)

PrivateSub Tang(ByRef a AsInteger)

a = a + 1

MsgBox "Giá trị của tham số trong thủ tục là : " & a

End sub

PrivateSubForm_Load()

Dim X AsInteger

X = 10

MsgBox "Giá trị của biến số X ban đầu là : " & X

Tang X

MsgBox "Giá trị của biến số X sau khi gọi thủ tục vẫn là : " & X

End sub

Kết quả sau khi chạy
  • Qui tắc chung khi khai báo các tham số và chương trình con:
  • Nếu có sự thay đổi giá trị của các tham số truyền vào chương trình con thì tham số hình thức được khai báo sẽ ở dạng tham trị (có từ khoá byVal đứng trước).
  • Nếu có nhu cầu thay đổi tham số truyền vào cho chương trình con thì tham số truyền vào sẽ ở dạng tham chiếu (có từ khoá byRef đứng trước, mặc định không có từ khoá byVal hay byRef thì được coi là byRef).
  • Chương trình con cần bao nhiêu Dữ kiện đầu vào thì mới giải quyết được Thực hành đặt ra thì sẽ khai báo bấy nhiêu tham số tương ứng.
  • Các tham số có thể khai báo là các tham số ngầm định (tức khi gọi chương trình con thì có thể bỏ qua tham số nay).

Ví dụ:

Sub ThongBao(Optional TB As String = "Hôm nay không có gì để Thông báo, nếu cò gì cần thông báo, chúng tôi sẽ ...")

MsgBox TB

End sub

  • Hàm thì có thể tham gia vào biểu thức tính toán, thủ tục thì không.
0