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 trong và ngoài, 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 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” làm 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 tác vụ

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

Trước khi tôi đ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 phải nằm trong cùng một quy trình, chúng ta 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?

Bạn có thể tải xuống Mẫu Excel Trả về VBA này tại đây - Mẫu Excel Trả về VBA

Ví dụ 1

Để hiểu cách sử dụng của câu lệnh này trước tiên, hãy xem đoạn mã dưới đây, sau đó 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 "Đang chạy Macro3" Return End Sub 

Để hiểu mã này, 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ờ 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 sang dòng tiếp theo thay vì nó hoạt động theo cách 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 nhiệm 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 câu lệnh “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ẽ “Return Back” 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à, "go-to label có tên là 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ẽ đánh dấu 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 quay trở lại 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ờ hãy nhấp vào OK, nó sẽ đánh dấu câu lệnh “Return”.

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

Không, nó sẽ thoát khỏi chương trình con. Cần phải thêm từ “Thoát Sub” nếu không sẽ gặp lỗi.

Ví dụ số 2

Bây giờ hãy xem thêm một ví dụ về việc sử dụng câu lệnh GoSub Return.

Mã:

 Sub Go_Sub_Return1 () Dim Num As Long Num = Application.InputBox (Nhắc: = "Vui lòng nhập số vào đây", Title: = "Số chia") Nếu Số> 10 Thì GoSub Phân chia Khác MsgBox "Số nhỏ hơn 10" Thoát Sub End Nếu thoát Sub Division: MsgBox Num / 5 Return End Sub 

Mã này sẽ yêu cầu bạn nhập số> 10, nếu số> 10 thì nó sẽ thực hiện nhiệm vụ chia nó cho 5 (Tên nhãn là “Bộ phận”) hoặc nếu không nó sẽ hiển thị thông báo là “Số là nhỏ hơn 10 ”.

Những điều cần ghi nhớ

  • 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.

$config[zx-auto] not found$config[zx-overlay] not found