2016-04-26 9 views
0

この関数から新しく作成されたワークブックオブジェクトを返そうとすると、エラーが発生します。私はこのことについていくつかの記事を見てきましたが、ほとんどが返り値の型としてVariantを使用することを指摘しています。 (正直なところ、バリアントデータ型を使用したくない)関数からワークブックオブジェクトを返すエラー

エラーテキスト:実行時エラー '91':オブジェクト変数またはWithブロック変数が設定されていない。私は他の投稿も見てきましたが、それにはエラーがありましたが、誰も '91'と思われませんでした。

Private Function NewWorkbook_Open(ByVal clientName As String, ByVal startDateFromSheet As Date) As Workbook 

    'Creates/formats new workbook and saves it to the xdrive without any completed 
    Dim newWorkBook As Workbook 
    Dim activeWorkbookName As String 
    Dim formattedDate 

    Workbooks.Add 

    formattedDate = Replace(Format(startDateFromSheet, "mm/dd/yy"), "/", ".") 

    'Saves workbook with new file name with date attached in saveable format 
    ActiveWorkbook.SaveAs Filename:=XLS_CONFIRM_FILE_PATH & "-" & GetOfficialClientName(clientName) & " " & formattedDate & ".xls", FileFormat:=xlNormal 


    NewWorkbook_Open = Workbooks(ActiveWorkbook.Name) 

新しいワークブックオブジェクトは次の行を介してメインルーチンに設定されている

Set newExcelConfirmBook = NewWorkbook_Open(.Cells(rowCounter,sellerFirmColumn).Value, startDateFromSheet)

+0

このことができますが、メインルーチンで 'startDateFromSheet'パラメータは、あなたの関数の場合と同じであるかどうかわかりません。 – Brian

+2

'NewWorkbook_Open = ...'の前に 'Set'がありません。 – yk11

答えて

1

必要がない場合は、「アクティブ...」を使用しないでください。正しく宣言した変数を使用してください。

Private Function NewWorkbook_Open(ByVal clientName As String, ByVal startDateFromSheet As Date) As Workbook 

'Creates/formats new workbook and saves it to the xdrive without any completed 
Dim newWorkBook As Workbook 
Dim activeWorkbookName As String 
Dim formattedDate 

Set newWorkBook = Workbooks.Add 

formattedDate = Replace(Format(startDateFromSheet, "mm/dd/yy"), "/", ".") 

'Saves workbook with new file name with date attached in saveable format 
newWorkBook.SaveAs Filename:=XLS_CONFIRM_FILE_PATH & "-" & GetOfficialClientName(clientName) & " " & formattedDate & ".xls", FileFormat:=xlNormal 


Set NewWorkbook_Open = newWorkBook 

エンド機能

2

どのようにあなたのコードの末尾に次のようにしようとした場合について:

set NewWorkbook_Open = Workbooks(ActiveWorkbook.Name) 

動作しますか?