Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
612to616
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
612to616
612to616
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Listenbox, aber mit anschließendem Neuerstellen !?

Listenbox, aber mit anschließendem Neuerstellen !?
23.05.2005 12:17:53
Pierre
Hallo, habe wirklich die "xlRecherche" ausgiebig durchsucht, aber nicht wirklich das gefunden was ich möchte :-)
...also hier nun meine kleine Aufgabe und somit Frage:
Ich habe mit Excel zwei LISTBOXEN erstellt - diese enthaltenen Werte sollen mehrfach auswählbar sein, und sollten diese Auswahl dann getroffen sein - soll per Startknopf diese Auswahl in ein neues Tabellenblatt entstehen.
Grundlage ist einfach eine Tabelle (mit insg. 26 Spalten), und diese LISTBOX soll die (man sieht es im Autofiltermodus) Werte enthalten die da enthalten sind (keine Duplikate) - handelt sich um Spalte C und Spalte D.
Sollte dann die Auswahl getroffen sein, startet man die "Automatisierung" (Startknopf) und es nimmt diese Filter und erstellt eine neue Tabelle mit allen dazugehörigen anderen Spalten und Zeilen.
Einfach zu erklären wäre es vieleicht:
Es soll quasi so funktionieren, als setze ich meine ganzen "Autofilter" (allerdings sollten es mehr als 2 auswählbar sein, Excel gehen ja nur 2 Bedingungen) und kopiere diese gefilterte Tabelle neu in ein Arbeitsblatt. Mit Aufzeichnen komm ich da sicher nicht weiter, weil ich dann alle möglichen Kombinationen aufzeichen müsste, die der jenige dann auswählen kann/möchte...
Für Hilfe wär ich sehr dankbar, das ist bestimmt wieder schwerer von mir erklärt als es ist.
*Bitte-um-Hilfe*
Grüße Pierre

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listenbox, aber mit anschließendem Neuerstellen !?
24.05.2005 04:44:47
Dani
Hallo Pierre,
ich weiss nicht ob ich dich richtig verstanden habe aber schau dir mal folgenden Code an. Er sucht in einer Quelltabelle nach den markierten Listboxeinträgen und kopiert die Zeile, wenn er etwas findet in die Zieltabelle:


      
Private Sub CommandButton2_Click()
Dim i, Listenlänge As Long
Dim Fundort As Range
Dim Quelltabelle, Zieltabelle As Worksheet
Set Quelltabelle = Workbooks("Mappe6").Worksheets("Tabelle1")
Set Zieltabelle = Workbooks("Mappe6").Worksheets("Tabelle2")
Zieltabelle.Range("A1:H100").Delete
For i = 0 To ListBox1.ListCount - 1
    
If ListBox1.Selected(i) = True Then
        
Set Fundort = Quelltabelle.Range("C:C").Find(ListBox1.List(i), , , xlWhole)
        
If Not Fundort Is Nothing Then
            Listenlänge = 1 + Zieltabelle.Cells(Rows.Count, 1).End(xlUp).Row
            Quelltabelle.Range(Fundort.Row & ":" & Fundort.Row).Copy Destination:=Zieltabelle.Range(Listenlänge & ":" & Listenlänge)
        
End If
    
End If
Next
For i = 0 To ListBox2.ListCount - 1
    
If ListBox2.Selected(i) = True Then
        
Set Fundort = Quelltabelle.Range("D:D").Find(ListBox2.List(i), , , xlWhole)
        
If Not Fundort Is Nothing Then
            Listenlänge = 1 + Zieltabelle.Cells(Rows.Count, 1).End(xlUp).Row
            Quelltabelle.Range(Fundort.Row & ":" & Fundort.Row).Copy Destination:=Zieltabelle.Range(Listenlänge & ":" & Listenlänge)
        
End If
    
End If
Next
Me.Hide
End Sub 


Gruss
Dani
Anzeige
AW: Listenbox, aber mit anschließendem Neuerstellen !?
24.05.2005 09:59:37
Pierre
Hallo,
das sieht schon mal gut aus - dankeschön - nur eine kleine Frage hätt ich noch:
Wie bekomm ich so eine ListBox in VBA hin? (Hab's bisher so hier...)

Private Sub ListBox1_Click()
ColumnsHead = True
ListBox1.ColumnCount = 1
ListBox1.RowSource = "GefilterteDatei!c2:c1000"
End Sub

...aber da zeigt es rein garnichts an?! Was bei deinem Code Tabelle1 ist, ist bei mir GefilterteDatei mit der Spalte C und D (geht's runter bis ca. 1000).
Könntest mir da noch mal helfen, Dani ? Zuvor hab ich nämlich eine Listbox mit Excel erstellt, aber anhand deines Codes denk ich ma muss ich's mit VBA tun, und versuch mich hier durchzuhangeln...
*Bitte-nochmals-um-Hilfe*
Grüße Pierre
Anzeige
AW: Listenbox, aber mit anschließendem Neuerstellen !?
24.05.2005 13:07:05
Dani
Hallo Pierre,
wenn du in der VBA Umgebung bist (z.B. mit ALT+F11) kannst du in der Menuleiste unter "Einfügen" eine "UserForm" einfügen. Diese ist später ein neues Fenster. Den Code kopiertst du im Projekt Explorer unter die Userform danach sollte es klappen. Ich habe noch einen CommandButton auf die UserForm gelegt um den Code zu starten, geht natürlich auch anders.
Viel Erfolg
Dani
AW: Listenbox, aber mit anschließendem Neuerstellen !?
24.05.2005 13:37:24
Pierre
Okay hab's gemacht, jetzt kommen Fehler:

Private Sub UserForm_Click()
Dim i, Listenlänge As Long
Dim Fundort As Range
Dim ListBox1, ListBox2               'hab ich hinzugefügt, weil er meinte Objekt dekl.
Dim Quelltabelle, Zieltabelle As Worksheet
Set Quelltabelle = Workbooks("Wasserfall.xls").Worksheets("GefilterteDatei")
Set Zieltabelle = Workbooks("Wasserfall.xls").Worksheets("Programmdatei")
Zieltabelle.Range("A1:H100").Delete
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then   'FEHLER: Objekt erforderlich, bleibt hängen...
Set Fundort = Quelltabelle.Range("C:C").Find(ListBox1.List(i), , , xlWhole)
If Not Fundort Is Nothing Then
Listenlänge = 1 + Zieltabelle.Cells(Rows.Count, 1).End(xlUp).Row
Quelltabelle.Range(Fundort.Row & ":" & Fundort.Row).Copy Destination:=Zieltabelle.Range(Listenlänge & ":" & Listenlänge)
End If
End If
Next
For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) = True Then
Set Fundort = Quelltabelle.Range("D:D").Find(ListBox2.List(i), , , xlWhole)
If Not Fundort Is Nothing Then
Listenlänge = 1 + Zieltabelle.Cells(Rows.Count, 1).End(xlUp).Row
Quelltabelle.Range(Fundort.Row & ":" & Fundort.Row).Copy Destination:=Zieltabelle.Range(Listenlänge & ":" & Listenlänge)
End If
End If
Next
'Me.Hide ...was ist das? Hab ich ma auskommentiert, kam gleich als erster Fehler...
End Sub

Ach, wenn ich nur mitreden könnte, einiges kann ich ja schon, aber dein Text ist halt so komplex und kompliziert - ich hab doch aber in dem UserForm (wie du sagtest) ein Button und 2 Listboxen. Beide sind leer, und auf dem Klick sagt er dann an der Stelle (oben) das das Objekt erforderlich ist?!!
Ansonsten dank ich dir ja auch wie verrückt, funktioniert auch sicherlich - aber ich kriegs nichtmal zum starten, das ich sagen könnte da müsste noch was anders sein.
Gruß Pierre
P.S. Hoffe mit viel Erfolg war nicht die letzte Antwort auf mein Problem?
Anzeige
AW: Listenbox, aber mit anschließendem Neuerstellen !?
24.05.2005 18:52:58
Dani
Hallo Pierre,
ich hab das ganze nochmals angeschaut und etwas auskommentiert. Wenn du das File öffnest sollte (eigentlich) das UserForm1 erscheinen und du kannst die Auswahl treffen gefundene Einträge werden in die zweite Tabelle kopiert. Zur Analyse des Codes: Wenn du mit Alt+F11 in die VBA Entwicklungsoberfläche gehst kannst du den Projektexplorer normalerweise irgendwo rechts auf deinem Bildschirm finden. Fenstertiltel: "Projekt-VBA Project" Hier siehst du in der Liste die verschiedenen Elemente in deinem VBA Projekt. In dieser Beispieldatei sind dies: "Diese Arbeitsmappe" / "Tabelle1" / "Tabelle2" / "Tabelle3" und "UserForm1" Das Element "Diese Arbeitsmappe" ist immer vorhanden wir brauchen es in diesem Beispiel zum starten der von uns eingefügten UserForm durch das Ereigniss Workbook_Open(). Wenn du auf "Diese Arbeitsmappe" klickst erscheint auch schon ganz automatisch der Code der zu diesem Element gehört. Du wirst sehen dass den Tabellen kein Code hinterlegt ist. Wenn du aber z.B. Tabelle1 anklickst erscheint bei dir links auf dem Bildschirm ein weisses Textfeld und darüber zwei ComboBoxen. Auf der linken kannst du auswählen für welches Element du Code in das Textfeld schreiben willst.Wenn du ein Element ausgewählt hast, kannst du mit der rechten ComBox ein Ereigniss auswählen zu welchem du Code schreiben willst. Die linke ComboBox zeigt als Standart "Allgemein" an. In dieser TextBox kannst du Deklarationen eingeben welche für das Element "Tabelle1" öffentlich sind. Ich hoffe ich habe dich nicht verwirrt mit diesen Ausführungen. Zurück zu unserem Problem: Wenn du die "UserForm1" anklickst erscheint der eigentlich von dir gesuchte Code. Der Code besteht aus zwei Teilen. Der erste wird automatisch beim start der UserForm ausgeführt. Die Prozedur heisst UserForm_Initialize() in dieser Prozedur wird die ListBox1 mit den Zahlen 1 bis 10 gefüllt. Danach wird die ListBox2 mit den Meldungen "Hallo1-Hallo10" gefüllt. Hier musst du nachhacken und die Listboxen mit deinen Daten füllen aber da ich deine Tabellen nicht kenne kann ich dir dazu nichts weiter sagen. Die zweite Prozedur welche von der UserForm aufgerufen werden kann ist CommandButton2_Click(). Hier werden beide Listboxen durchsucht und die entsprechenden Zeilen in die zweite Tabelle kopiert.
Ich hoffe ich habe mich diesmal verständlicher ausgedrückt und du kommst deinem Ziel etwas näher.
Gruss
Dani
Anzeige
AW: Listenbox, aber mit anschließendem Neuerstellen !?
26.05.2005 09:03:03
Pierre
Zitat: "Wenn du das File öffnest sollte (eigentlich) das UserForm1 erscheinen und du kannst die Auswahl treffen gefundene Einträge werden in die zweite Tabelle kopiert." ...könntest du mir da auch das File schicken?! Wäre echt noch mal nett, bitte! Das sieht so gut aus, nur weiter unten sprichst du von Hallo1 und Hallo2 ?! o_O ...per Mail hast du es mir ja auch nicht geschickt, könntest du da nochmal?
Zum Programm selbst, hab bisher alles gemacht, hab eine Mappe erstellt (erstma zur Probe) und da in Spalte J was eingetragen - das kopiert er auch im Hintergrund von deinem Userform_Initialze() ...aber weiter unten kommt der Fehler zu ListBox1 wo er sicherlich die Werte dieser neuen Spalte reinschreiben soll?! Aber da meckert er das die ListBox1 fehlt - sie ist aber da - Momentan leer:

Private Sub ListBox1_Click() End Sub

Könntest du da die Datei mit eingefügtem Code an mich schicken, ich hoffe einfach inständig das du das noch liest, bevor das Archiv geschlossen wird!
raptor008@web.de
Ich dank dir auf alle Fälle für alles bisherige. (Warst ja auch der einzige...*g*)
Grüße Pierre
Alles andere hab ich ich eingefügt - Userform1 ist drin mit Listbox1+2 und einer ComboBox und einem CommandButton. Quelltext sieht bei mir so aus:
Option Explicit

Private Sub ComboBox1_Change()
End Sub


Private Sub CommandButton2_Click()
Dim i, Listenlänge As Long
Dim Fundort As Range
Dim Quelltabelle, Zieltabelle As Worksheet
Set Quelltabelle = Workbooks("Mappe2").Worksheets("Tabelle1")
Set Zieltabelle = Workbooks("Mappe2").Worksheets("Tabelle2")
Zieltabelle.Range("A1:H100").Delete
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Set Fundort = Quelltabelle.Range("C:C").Find(ListBox1.List(i), , , xlWhole)
If Not Fundort Is Nothing Then
Listenlänge = 1 + Zieltabelle.Cells(Rows.Count, 1).End(xlUp).Row
Quelltabelle.Range(Fundort.Row & ":" & Fundort.Row).Copy Destination:=Zieltabelle.Range(Listenlänge & ":" & Listenlänge)
End If
End If
Next
For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) = True Then
Set Fundort = Quelltabelle.Range("D:D").Find(ListBox2.List(i), , , xlWhole)
If Not Fundort Is Nothing Then
Listenlänge = 1 + Zieltabelle.Cells(Rows.Count, 1).End(xlUp).Row
Quelltabelle.Range(Fundort.Row & ":" & Fundort.Row).Copy Destination:=Zieltabelle.Range(Listenlänge & ":" & Listenlänge)
End If
End If
Next
End Sub


Private Sub ListBox1_Click()
End Sub


Private Sub UserForm_Initialize()
Dim ws As Worksheet
Dim xErsteZeile As Long
Dim xZeile As Long
Dim ListBox1
ThisWorkbook.Worksheets("Tabelle1").Range("J:J").Copy Destination:=Tabelle3.Range("A:A")
Set ws = ThisWorkbook.Worksheets("Tabelle3")
xErsteZeile = ws.Cells(Rows.Count, 1).End(xlUp).Row
For xZeile = xErsteZeile To 1 Step -1
If Application.WorksheetFunction.CountIf(ws.Columns(1), ws.Cells(xZeile, 1).Value) > 1 Then
ws.Rows(xZeile).Delete
End If
Next
ListBox1.RowSource = "Tabelle3!A:A"
UserForm1.Show
End Sub

Anzeige
AW: Listenbox, aber mit anschließendem Neuerstellen !?
27.05.2005 20:02:56
Dani
Hallo Pierre,
ich werde dir mal eine Beispieldatei hochladen. Habe aber im Moment keine Zeit, ich antworte sobald es geht. Ich habe den Code getestet aber das File nicht abgespeichert. Wenn dein Treaht rausfällt melde dich einfach nochmals.
Gruss
Dani

83 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige