【问题标题】:Function error: Function doesn't return a value on all code paths函数错误:函数未在所有代码路径上返回值
【发布时间】:2013-07-04 03:56:56
【问题描述】:

我是编程新手,显然对编写函数不是很有经验。我写了下面的函数,但是当我走到最后时,End Function 语句有一个错误:Function "viewSheets" does not return a value on all code paths。

我已经研究过这个问题,但无济于事。这是我第一次尝试一个函数:

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

结束模块

【问题讨论】:

  • 实际上,如果您不打算从函数中返回值,我只会将其设为不需要返回语句的子例程(方法)

标签: vb.net


【解决方案1】:

您确实声明了一个函数,根据定义,该函数必须返回一个值。

在 VB 中,您必须指定函数名称,或者从 VB.Net 开始,您可以使用 return 语句返回:

在结束函数之前放:

    viewSheets=""

您应该阅读有关 VB 中的函数和子例程的更多信息。

Difference between Private Sub, Function and Class

【讨论】:

  • 在 VB.NET 中使用 Return 语句,而不是为函数名赋值:Return ""
【解决方案2】:

它被声明为一个返回字符串的函数。因为您打开了 Option Strict,所以您需要在所有代码路径上都有一个 Return 语句。 Return 需要返回一个字符串。

【讨论】:

  • 其实,你确定这不仅仅是警告吗?这不是因为我刚刚发现的 Option Strict,但我的回答仍然适用。
  • 如果只是警告怎么办?
  • 如果它只是一个警告,这意味着你在函数中至少有一个代码路径没有Return 一个值。如果该代码被命中,该函数将返回一个空值 (Nothing)。也就是说,FunctionThatDoesNotReturn() is Nothing 将是 True
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多