2011-10-06 34 views
0

我正在簡要介紹VBA以自動化一些Excel工作流程。我有一個創建工作表並返回它的函數。我把它叫做如下:錯誤設置VBA函數的返回值

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 

當我嘗試分配的最後一行(makeNewWorksheet = ws)函數的返回值,我得到一個錯誤:

Object variable or With block variable not set 

我看到的在線文檔似乎都不適用於這種情況。一切都已定義,ws變量有一個值。

編輯:Re。下面接受的答案。 Here's關於set關鍵字的解釋。

回答

3

此:

makeNewWorksheet = ws 

應該是:

set makeNewWorksheet = ws 
+0

謝謝,它是因爲我已經使用的任何基本型很長一段時間。我只是查找了'set'關鍵字並鏈接到上面的相關問題。 – edoloughlin