11/08/2018, 19:25

Function trong VBA

Học java core Một Function trong VBA (chức năng do người dùng tự định nghĩa) là một nhóm các mã tái sử dụng, được gọi là bất cứ nơi nào trong chương trình của bạn. Điều này giúp loại bỏ sự việc viết mã giống nhau lặp đi lặp lại. Điều này cho phép các lập trình viên phân chia một ...

Học java core

Một Function trong VBA (chức năng do người dùng tự định nghĩa) là một nhóm các mã tái sử dụng, được gọi là bất cứ nơi nào trong chương trình của bạn. Điều này giúp loại bỏ sự việc viết mã giống nhau lặp đi lặp lại. Điều này cho phép các lập trình viên phân chia một chương trình lớn thành một số chức năng nhỏ và dễ quản lý.

Ngoài các Function sẵn có, VBA cũng cho phép người dùng tạo ra các Function của riêng bạn.

Cú pháp của Function trong VBA

Không có định nghĩa kiểu trả về cụ thể:

Function FunctionName([parameter-list])
   statement 1
   statement 2
   statement 3
   .......
   statement n
End Function

Định nghĩa kiểu trả về cụ thể:

Function FunctionName([parameter-list]) As [data-type]
   statement 1
   statement 2
   statement 3
   .......
   statement n
End Function

Trong đó:

[parameter-list]: là danh sách tham số, có thể có không, một hoặc nhiều.

[data-type]: là kiểu giá trị trả về của function, có thể định nghĩa hoặc không.

Đặc điểm của Function trong VBA

Một Function trong VBA có thể có giá trị trả về hoặc không. Điều này là cần thiết nếu bạn muốn Function trả về một giá trị.

Ví dụ: bạn có thể truyền hai số vào trong một Function và sau đó bạn mong muốn Function đó trả về tích của hai số đã cho.

Ví dụ Function trong VBA

Ví dụ: viết một Function tính tích của hai số, với tham số thứ hai là tùy chọn (có thể nhập hoặc không). Nếu tham số thứ hai không được truyền vào thì Function này trả về tích của số thứ nhất với chính nó. Ngược lại nếu tham số thứ hai được truyền vào thì Function này trả về tích của số thứ nhất và thứ hai.

Chỉ rõ kiểu giá trị trả về của function là Double:

Function findArea(Height As Double, Optional Width As Variant) As Double
   If IsMissing(Width) Then
      findArea = Height * Height
   Else
      findArea = Height * Width
   End If
End Function

Hoặc không cần chỉ rõ kiểu giá trị trả về của function:

Function findArea(Height As Double, Optional Width As Variant)
   If IsMissing(Width) Then
      findArea = Height * Height
   Else
      findArea = Height * Width
   End If
End Function
Note: Một giá trị có thể được trả về với tên của chính Function đó, trong ví dụ trên là giá trị findArea sẽ được trả về cho Function có tên findArea.

Gọi một Function trong VBA

Bạn có thể gọi lại function trong một Functon khác hoặc trong một Sub khác, hoặc trong một Cell của Worksheet.

Gọi một Function trong một Functon khác hoặc trong một Sub khác

Ví dụ:

Sub ClickButton()
    Dim area1 As Double
    Dim area2 As Double

    area1 = findArea(10, 5)
    area2 = findArea(10)
    MsgBox "aria1 = " & area1 & ", area2 = " & area2
End Sub

Kết quả:

Function trong VBA 1

Gọi một Function trong một Cell của Worksheet

Để gọi một Function, hãy gọi hàm bằng cách sử dụng tên hàm như thể hiện trong ảnh chụp màn hình sau.

Function trong VBA 2

Kết quả:

Function trong VBA 2
Học java core
0