ich sitze schon wieder seit Stunden an einem Problem mit einem Makro.
Ich möchte in eine UserForm 2(später 3) mehrspaltige Listboxen einlesen.
Die Listboxen erhalten Ihre Daten über zur Laufzeit neu angelegte Arbeitsmappen. Das funktioniert einwandfrei. Ich möchte aber weiterhin erreichen, daß ich den in der jeweiligen Listbox ausgewählten Datensatz über einen Commandbutton öffnen kann. Auch das funktioniert zum Teil. Habe ich nur eine Listbox, gibt es keine Probleme. Habe ich zwei Listboxen, deren Daten aus verschiedenen Mappen kommen, bricht das Makro beim öffnen der Auswahl aus der ersten Listbox ab. LOGISCH, da die neu erstellte Mappe für Listbox1 dann bereits wieder geschlossen ist und ich keinen Listindex daraus mehr erhalten kann.
Nun meine Frage. Wie kann ich den neu zu erstellenden Mappen einen Namen zuweisen, um sie nicht schließen zu müssen, damit ich zwischen den offenen Mappen per Makro wechseln kann? Erst beim schließen der UserForm sollen diese Mappen ohne speichern geschlossen werden.
Private Sub UserForm_Initialize()
Dim iRowL As Integer
Dim sFilter As String
Application.ScreenUpdating = False
sFilter = Worksheets("Daten").Range("I2")
If sFilter = "" Then Exit Sub
'Hier beginnt der Filter für die erste Listbox
Worksheets("Angebote").Activate
Cells.Select
Selection.AutoFilter Field:=9, Criteria1:=sFilter
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Workbooks.Add
Range("A1").PasteSpecial xlPasteValues
Columns("F:F").Select
Selection.NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"
If Range("A2").Value = "" Then
ActiveWorkbook.Close savechanges:=False
Selection.AutoFilter
Exit Sub
Else
ListBox1.RowSource = "A2:y65536"
ActiveWorkbook.Close savechanges:=False
End If
'Hier beginnt der Filter für die zweite Listbox
Worksheets("Auftrag").Activate
Cells.Select
Selection.AutoFilter Field:=9, Criteria1:=sFilter
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Workbooks.Add
Range("A1").PasteSpecial xlPasteValues
Columns("F:F").Select
Selection.NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"
If Range("A2").Value = "" Then
ActiveWorkbook.Close savechanges:=False
Selection.AutoFilter
Exit Sub
Else
ListBox2.RowSource = "A2:y65536"
ActiveWorkbook.Close savechanges:=False
End If
End Sub
Private Sub ListBox1_Change()
Worksheets("Tabelle1").Range("Z1") = Me.ListBox1.Column(20)
Label32.Caption = Sheets("Tabelle1").Range("z1")
End Sub
Private Sub ListBox2_Change()
Worksheets("Tabelle1").Range("Z2") = Me.ListBox2.Column(20)
Label33.Caption = Sheets("Tabelle1").Range("z2")
End Sub
Ich hoffe, meine Frage ist nicht zu ausschweifend, bzw. verständlich rübergekommen. Für Eure Hilfe und / oder Anregungen schon einmal DANKE!
Gruß
Dieter.K