Excel 设置VBA函数的返回值时出错

Excel 设置VBA函数的返回值时出错,excel,vba,Excel,Vba,我正在对VBA进行一次短暂的尝试,以自动化一些Excel工作流。我有一个创建工作表并返回它的函数。我称之为: Dim ws As Worksheet Dim wb As Workbook Set wb = Application.ActiveWorkbook Set ws = makeNewWorksheet(wb) 功能是: Function makeNewWorksheet(wb) As Worksheet Dim wsName As String Dim ws As W

我正在对VBA进行一次短暂的尝试,以自动化一些Excel工作流。我有一个创建工作表并返回它的函数。我称之为:

Dim ws As Worksheet
Dim wb As Workbook

Set wb = Application.ActiveWorkbook
Set ws = makeNewWorksheet(wb)
功能是:

Function makeNewWorksheet(wb) As Worksheet
    Dim wsName As String
    Dim ws As Worksheet
    Dim newWs As Worksheet

    wsName = "Bounced " & Format(Now, "dd-mm-yyyy")
    For Each ws In wb.Worksheets
        If ws.Name = wsName Then
            Set newWs = ws
            Exit For
        End If
    Next
    If newWs Is Nothing Then
        Set ws = wb.Sheets.Add
        With ws
            .Name = wsName
            .Move after:=Sheets(Sheets.Count)
        End With
    End If
    makeNewWorksheet = ws
End Function
当我试图在最后一行(
makenewsheet=ws
)上分配函数的返回值时,我得到一个错误:

Object variable or With block variable not set
我能找到的在线文档似乎都不适用于这种情况。一切都已定义,
ws
变量有一个值

编辑:Re。下面是公认的答案。
集合
关键字的说明。

此:

makeNewWorksheet = ws
应该是:

set makeNewWorksheet = ws
这:

应该是:

set makeNewWorksheet = ws

谢谢,我已经很久没有使用任何基本的变体了。我只是查了一下
set
关键字,并链接到上面的一个相关问题。谢谢,我已经很久没有使用任何基本变量了。我只是查找了
set
关键字,并链接到上面的一个相关问题。