Wenn ich versuche, eine neu erstellte zurückzugebenArbeitsmappenobjekt von dieser Funktion Ich erhalte eine Fehlermeldung. Ich habe mehrere Posts auf SO darüber gesehen, aber die meisten scheinen darauf hinzudeuten, eine Variante als Rückgabetyp zu verwenden, und mir wurde gesagt, dass dies immer wieder ein großes Nein ist. (Ehrlich gesagt möchte ich auch keinen varianten Datentyp verwenden)
Fehlertext: Laufzeitfehler "91": Objektvariable oder Mit Blockvariable nicht gesetzt. Ich habe auch andere Beiträge auf SO gesehen, die Fehler hatten, aber keiner scheint "91" gewesen zu sein.
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)
Das neue Arbeitsmappenobjekt wird in der Hauptroutine über die folgende Zeile festgelegt
Set newExcelConfirmBook = NewWorkbook_Open(.Cells(rowCounter,sellerFirmColumn).Value, startDateFromSheet)
Antworten:
1 für die Antwort № 1Verwenden Sie nicht "aktiv ...", wenn Sie nicht müssen. Verwenden Sie die Variablen, die Sie korrekt deklarieren.
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
Funktion beenden
2 für die Antwort № 2
Wie wäre es, wenn Sie es am Ende Ihres Codes so versuchen:
set NewWorkbook_Open = Workbooks(ActiveWorkbook.Name)
Funktioniert es?