VBA trở lại - Làm thế nào để sử dụng GoSub Return Statement trong VBA?

Tuyên bố trả về VBA trong Excel

VBA thật tuyệt vời và là cứu cánh cho những ai biết mã hóa VBA. Nó có thể tiết kiệm rất nhiều thời gian tại nơi làm việc của chúng tôi. Trong các bài viết trước của chúng tôi, chúng tôi đã thảo luận về nhiều thứ và khái niệm về VBA return. Một trong những khái niệm như vậy là câu lệnh GoSub Return. Trong bài viết này, chúng tôi sẽ giới thiệu đến bạn những khái niệm này.

Tuyên bố trở lại của GoSub là gì?

Câu lệnh “Go Sub” có nghĩa là nó sẽ đi đến dòng mã được chỉ ra bởi nhãn thông qua tên và thực hiện một tập hợp tác vụ cụ thể cho đến khi nó tìm thấy câu lệnh “Return”.

Điều này tương tự như câu lệnh xử lý lỗi “GoTo Label”, nhưng những gì “GoSub Return” thực hiện là nó sẽ quay trở lại dòng mã tiếp theo thay vì tiếp tục từ tên nhãn.

Dưới đây là cú pháp của câu lệnh VBA GoSub Return.

GoSub (Tên nhãn)  … Dòng mã  (Tên nhãn):  … Dòng mã để thực hiện nhiệm vụ

Tôi biết là khó hiểu khi đọc cú pháp nhưng sử dụng ví dụ, bạn có thể hiểu được khái niệm.

Trước khi đi đến các ví dụ, hãy để tôi kể một vài điều về tuyên bố này.

  • Câu lệnh GoSub gọi chương trình con trong VBA, được đặt tên bởi một nhãn trong cùng một quy trình hoặc Hàm.
  • Cả GoSub và Return đều phải theo cùng một quy trình. Chúng tôi không thể gọi macro chương trình con khác ở đây.
  • Bạn có thể giới thiệu bất kỳ số lượng báo cáo GoSub Return nào.
  • Một câu lệnh trả về sẽ tiếp tục việc thực thi mã từ nơi nó dừng lại trước khi nó chuyển đến quy trình con được chỉ ra bởi một tên nhãn.

Làm thế nào để sử dụng GoSub Return Statement trong VBA?

Ví dụ 1

Để hiểu cách sử dụng câu lệnh này, trước tiên hãy xem đoạn mã dưới đây. Sau này tôi sẽ giải thích cho bạn từng dòng mã.

Mã:

Sub Go_Sub_Return () GoSub Macro1 'Label Name1 GoSub Macro2' Label Name2 GoSub Macro3 'Label Name3 Exit Sub Macro1: MsgBox "Now running Macro1" Return Macro2: MsgBox "Đang chạy Macro2" Return Macro3: MsgBox "Hiện đang chạy Macro3" Return End Sub

Để hiểu mã này, chúng ta hãy chạy từng dòng mã bằng cách nhấn phím F8. Khi nhấn phím F8 lần đầu tiên, nó sẽ bắt đầu chạy macro.

Bây giờ hãy nhấn phím F8 một lần nữa để chuyển sang dòng tiếp theo.

Chúng ta đều biết macro sẽ chạy từng dòng mã, nhưng nếu bạn nhấn phím F8, nó sẽ không chuyển đến dòng tiếp theo; đúng hơn, nó hoạt động khác.

Nó đã chuyển đến nhãn có tên là “Macro1”, điều này là do trong câu lệnh trước đó “GoSub”, chúng tôi đã hướng dẫn macro chuyển đến tên nhãn quy trình phụ “Macro1”, do đó, nó đã chuyển đến tên nhãn tương ứng.

Bây giờ bằng cách nhấn phím F8, macro excel sẽ thực hiện tác vụ nhãn “Macro1” để hiển thị kết quả trong hộp thông báo.

Nhấp vào Ok của hộp thông báo để quay lại cửa sổ mã hóa.

Bây giờ nó đã đánh dấu tuyên bố "Return". Nếu bạn nhấn phím F8 thêm một lần nữa, những gì nó sẽ làm là nó sẽ “Quay trở lại” về dòng mã trước đó trước khi nó nhảy đến tên nhãn.

Lần trước nó đã thực thi mã “GoSub Macro1” và nó đã thực hiện tác vụ tên nhãn “Macro1”. Vì chúng tôi đã đề cập đến câu lệnh “Return”, nó quay trở lại dòng mã tiếp theo, tức là

“GoSub Macro2”

Câu lệnh nói gì là, "chuyển đến nhãn có tên Macro2". Trong phần dưới đây cho nhãn “Macro2”, tôi đã đề cập đến một nhóm tác vụ cụ thể.

Bây giờ chúng ta sẽ nhận được nhiệm vụ thủ tục con thứ hai là hiển thị giá trị trong hộp thông báo.

Bây giờ hãy nhấp vào, Ok. Nó sẽ làm nổi bật câu lệnh “Return” thứ hai.

Bây giờ khi nhấp vào phím F8, nó sẽ trở lại dòng mã tiếp theo trước khi trở về nhãn “Macro2”. Bây giờ nó sẽ đánh dấu “GoSub Macro3”.

Bây giờ nó sẽ chuyển đến nhãn “Macro3”, nhấn phím F8.

Bây giờ tác vụ nhãn thứ ba sẽ được thực thi.

Bây giờ bấm vào, OK. Nó sẽ làm nổi bật câu lệnh "Return".

Bây giờ hãy nhấn phím F8 một lần nữa; nó sẽ nhảy trở lại dòng mã “Thoát Sub.”

No, it will exit the subroutine. It is necessary to add the word “Exit Sub” otherwise, and it will encounter an error.

Example #2

Now take a look at one more example of using the GoSub Return statement.

Code:

Sub Go_Sub_Return1() Dim Num As Long Num = Application.InputBox (Prompt:="Please enter the number here", Title:="Divsion Number") If Num> 10 Then GoSub Division Else MsgBox "Number is less than 10" Exit Sub End If Exit Sub Division: MsgBox Num / 5 Return End Sub

This code will ask you to enter the number which is>10. If the number is>10, then it will perform the task of dividing it by 5 (Label Name is “Division”), or else it will show the message as “Number is less than 10”.

Things to Remember

  • Tên nhãn phải giống nhau trong câu lệnh GoSub và Return, và trong câu lệnh return, tên nhãn phải được đặt sau dấu hai chấm (:).
  • Luôn sử dụng Exit Sub trong VBA sau khi tất cả các câu lệnh trả về được thực hiện để tránh thông báo lỗi.

thú vị bài viết...