2013-07-06 27 views
0

我是編程新手,顯然對寫函數不太熟練。我寫了下面的函數,但隨着我到最後,End Function語句有一個錯誤:函數「viewSheets」不返回所有代碼路徑上的值。函數錯誤:函數沒有在所有代碼路徑上返回一個值

我已經研究過這個問題,但無濟於事。這是我第一次嘗試的功能:

Option Strict On 
Option Explicit On 

Imports Microsoft.Office.Interop.Excel 
Imports System.Windows.Forms 
Module sheetView 

Function viewSheets(sheetName As String, status As Boolean, show As String) As String 

    Dim ThisApplication As Excel.Application = New Excel.Application() 
    Dim WB As Excel._Workbook 
    Dim WS As Excel.Worksheet 

    WB = CType(Globals.ThisWorkbook.Application.ActiveWorkbook, Excel.Workbook) 
    WS = DirectCast(WB.Sheets("sheetName"), Excel.Worksheet) 

    With ThisApplication 

     .ScreenUpdating = False 

     WS.Select() 

     .ActiveWindow.DisplayGridlines = status 
     .ActiveWindow.DisplayHeadings = status 
     .ActiveWindow.DisplayWorkbookTabs = status 
     .DisplayFormulaBar = status 
     .DisplayStatusBar = status 
     .ExecuteExcel4Macro("Show.ToolBar(""Ribbon"", show)") 


     .ScreenUpdating = True 


    End With 

End Function 

前端模塊

+0

其實,如果你不打算回來從你的函數的值,我只想讓一個子程序(方法),它不需要return語句 –

回答

2

您確實聲明瞭一個函數,該函數根據定義必須返回一個值。

在VB中,你必須指定函數名或因爲VB.Net您可以返回使用return語句:

末功能之前只放:

viewSheets="" 

你應該閱讀有關功能和VB中的子例程。

Difference between Private Sub, Function and Class

+0

謝謝,我會這麼做 –

+1

在VB.NET中使用'Return'語句,而不是爲函數的名稱賦值:'Return「'' –

2

它聲明爲返回一個字符串的函數。由於您已啓用Option Strict,因此您需要在所有代碼路徑上都有Return語句。 Return需要返回一個字符串。

+0

其實,你確定它不只是一個警告?這不是因爲我剛剛發現的Option Strict,但我的答案仍然適用。 –

+0

如果只是一個警告呢? – 2015-10-01 13:23:36

+1

如果它只是一個警告,這意味着在函數中至少有一個代碼路徑不返回值。如果該代碼被擊中,該函數將返回一個空值('Nothing')。也就是說,'FunctionThatDoesNotReturn()是Nothing'將是'True'。 –

相關問題