Sự khác biệt giữa một hàm và một con trong Excel VBA là một hàm có thể trả về một giá trị trong khi một con không thể. Các hàm và con trở nên rất hữu ích khi kích thước chương trình tăng lên.

Chức năng

Nếu bạn muốn Excel VBA thực hiện một tác vụ trả về kết quả, bạn có thể sử dụng một hàm. Đặt một chức năng vào một mô-đun (Trong Visual Basic Editor, bấm Chèn, Mô-đun). Ví dụ, hàm có tên Khu vực.

Function Area(x As Double, y As Double) As Double

Area = x  y

End Function

Giải thích: Hàm này có hai đối số (kiểu Double) và một kiểu trả về (phần sau As cũng thuộc kiểu Double). Bạn có thể sử dụng tên của hàm (Khu vực) trong mã của mình để cho biết bạn muốn trả về kết quả nào (ở đây là x y).

Bây giờ bạn có thể tham chiếu đến hàm này (nói cách khác là gọi hàm) từ một nơi khác trong mã của bạn bằng cách chỉ cần sử dụng tên của hàm và đưa ra giá trị cho mỗi đối số.

Đặt một liên kết: / vba-create-a-macro # command-button [command button] trên trang tính của bạn và thêm các dòng mã sau:

Dim z As Double

z = Area(3, 5) + 2

MsgBox z

Giải thích: Hàm trả về một giá trị vì vậy bạn phải ‘bắt’ giá trị này trong mã của mình. Bạn có thể sử dụng một biến khác (z) cho việc này. Tiếp theo, bạn có thể thêm một giá trị khác vào biến này (nếu muốn). Cuối cùng, hiển thị giá trị bằng MsgBox.

Kết quả khi bạn bấm vào nút lệnh trên sheet:

Excel VBA Function Result

Sub

Nếu bạn muốn Excel VBA thực hiện một số hành động, bạn có thể sử dụng một phụ. Đặt một phụ vào một mô-đun (Trong Visual Basic Editor, bấm Chèn, Mô-đun).

Ví dụ, phụ có tên Khu vực.

Sub Area(x As Double, y As Double)

MsgBox x * y

End Sub

Giải thích: Con này có hai đối số (kiểu Double). Nó không có kiểu trả về! Bạn có thể tham chiếu đến sub này (gọi sub) từ một nơi khác trong mã của bạn bằng cách chỉ cần sử dụng tên của sub và đưa ra một giá trị cho mỗi đối số.

Đặt liên kết: / vba-create-a-macro # command-button [command button] trên trang tính của bạn và thêm dòng mã sau:

Area 3, 5

Kết quả khi bạn bấm vào nút lệnh trên sheet:

Excel VBA Sub Result

Bạn có thể thấy sự khác biệt giữa chức năng và phụ? Hàm trả về giá trị 15. Chúng tôi đã thêm giá trị 2 vào kết quả này và hiển thị kết quả cuối cùng. Khi chúng tôi gọi sub, chúng tôi không còn quyền kiểm soát kết quả (15) vì sub không thể trả về giá trị!