2012-04-13 145 views
42

我會通過一些舊的VB代碼,我碰上函數定義像這樣的 -VB6中Sub和Function有什麼區別?

Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer 

Private Sub cmdCustomerList_Click() 

有什麼區別?

+0

在Excel中唯一的「替補」是可用於分配給形狀分配宏MSGBOX。 – SAm 2015-01-08 12:15:37

回答

98

函數返回值,Sub不。就這麼簡單。

+0

好的。感謝你的回答。 – CodeBlue 2012-04-13 13:31:35

+8

+1。該手冊[說](http://msdn.microsoft.com/en-us/library/aa266305(v = vs.60).aspx):「像一個函數過程,一個Sub過程是一個獨立的過程,可以採取參數,執行一系列語句,並更改其參數的值,但與返回值的函數過程不同,Sub過程不能用於表達式中。「看起來有點冗長,但那是因爲他們告訴你一些關於Sub和Function能做什麼的附加信息。 – MarkJ 2012-04-13 13:50:16

0

在VB功能

  • 函數必須返回一些值/秒
  • 語法: 私有函數fun_name(參數/ S(可選))作爲return_type(整數,字符串..) 返回值 端功能
  • fun_name(參數(可選))是足夠的函數調用

子在vb

  • 子不需要是返回任何值/秒
  • 語法: 私有子sub_name(參數/ S(可選))

    末次

  • sub_name(參數(可選))已足夠用於函數調用
4

在函數中,我們可以將值作爲布爾值,字符串和其他數據數據類型返回。

但子不返回任何東西。 它只是執行我們給出的代碼和指令。這些也被視爲方法

Sub也用於控件的事件,這些事件也不會返回任何值。

例如一個命令按鈕的單擊事件: 私人子cmd_click()

端子

11

的函數也可以在表達式中使用。子程序不能。 函數可以比子例程更好地提高代碼的可讀性。

這裏有一個如何的功能可以增加可讀性的例子:

If AccountIsLocked("JJones") then Msgbox("This account is locked") 

此功能會在某處定義

public function AccountIsLocked(UserId as string) as boolean 
    dim usr = uow.AccountRepository.UserInfo(UserId) 
    return usr.locked 
end function 

這是同樣的例子,但有一個子程序編碼:

CheckIfAccountLocked("JJones") 

和其他地方該子被定義:

public sub CheckIfAccountLocked(UserId) 
     if uow.AccountRepository.UserInfo(UserId).locked then 
      msgbox("Account is locked") 
     end if 
end sub 

另請注意,檢查值是否與操作分開 - 這有助於職責分離。該功能將提供重用性。

使用VB6有理事括號一些奇怪的規則。如果不存在子參數,則不需要括號(我認爲Visual Studio可能會刪除括號)。解決這個問題的一個方法就是在你的sub之前添加關鍵字「Call」。

Call CheckIfAccountLocked() 

VS

CheckIfAccountLocked 
+0

這裏的最佳答案 – Hydro 2016-09-26 01:14:57

3

他們都是部分編寫代碼然而一個函數必須返回一個值。例如,如果你有其中一個複雜的數學程序需要執行許多次,你會簡單地做一個功能,並有複雜的數學代碼在那裏,任何時候你需要做的的計算,你只需調用功能的程序。希望這有助於我不確定我是否解釋得好。

2

是什麼在VB6 Sub和功能之間的區別?

」 可以執行一些動作。 「sub」不返回任何值。

實施例:

的Form_Load()

功能」還可以執行一些動作,但它也返回一些值以指向從它被調用。 即 「函數返回一個值,通常基於一個變量」

實施例:

纈氨酸(),FormatPercentage()。

-1

一個函數保存的數據和代碼。但是子程序僅包含代碼,但不包含數據。

-1
  1. 函數的語法將是Function ... End函數和Sub將Sub ... End Sub。
  2. 功能可能會或可能不會有對象,但其中子不
  3. 函數可以返回瓦萊斯不過分這麼想的
  4. 功能可有對象存儲庫子沒有對象
  5. 功能可重複使用但子沒有
  6. 擴展的功能是.qfl其中對於子是.vba
相關問題