Ich habe der Variablen eine Arbeitsmappe zugewiesen. Dann mache ich ein paar Sachen und speichere die Datei und schließe die Arbeitsmappe:Arbeitsmappenvariable in einer Schleife löschen
Stellt Arbeitsmappe auf nichts eine gute Idee, wenn ich diesen Code in einer Schleife verwenden möchte?
For i = 1 To UBound(a_ven_lst1)
Set wb_input1 = Application.Workbooks.Add
Set ws_input1 = wb_input1.Sheets(1)
.Rows(1).Copy ws_input1.Rows(1)
.Rows(d_fst_ven_row & ":" & d_lst_ven_row).Copy ws_input1.Rows(2)
s_save_path = f_str_file_name(ws_input1.Cells(2, i_ven_col_cnt).Value)
s_file_path = s_path & "\" & s_save_path & ".xlsx"
a_ven_lst1(i, 2) = s_file_path
wb_input1.SaveAs Filename:=s_file_path
wb_input1.Close True
Set wb_input1 = Nothing
Next i
Töte ich diese Variable auf eine ordnungsgemäße Weise? Ich sah einige Objekte noch im VBA-Editor vorhanden, nachdem der Code aber weit über diesen Punkt hinaus zerquetscht wurde.
IMO zu sorgen, ist der beste Ansatz ist es, 'Dim' die Variablen auf den kleinsten Umfang es für erforderlich. In diesem Fall würde ich 'wb_input1' innerhalb der Schleife deklarieren. Sie müssten es dann nicht aufheben. –
Da Sie es in der Schleife wiederverwenden, müssen Sie es innerhalb der Schleife nicht wirklich auf nichts einstellen. Realistisch, solange es lokal auf das Subsystem beschränkt ist, wird es standardmäßig bereinigt. – Zerk
@ A.S.H der kleinste Bereich in VBA ist Prozedur-Ebene; Eine Schleife hat keinen eigenen Bereich. Ich würde den Schleifenkörper in eine eigene Prozedur extrahieren und die Variable * dort * deklarieren. –