Excel/VBA Auswählen von Zeilen

T0601

Newbie
Registriert
Juli 2014
Beiträge
3
Guten Morgen.

Ich bin neu hier im Forum und konnte schon einiges an Hilfe mitnehmen.
Da ich aber jetzt nicht weiterkomme, bräuchte ich glaube ich mal Hilfe.

Ich habe mir in Excel ne kleine Schulverwaltung gestrickt.

Es funktioniert auch alles wie es soll (ist noch nicht in den Ausdrucken genau formatiert), aber ich würde gerne noch etwas umsetzen. Die Datei habe ich hier mal angehangen. (Adminebene ist ohne Passwort).

Also, es existiert folgender Code:

Code:
Dim rngCell As Range, rng As Range
    Dim strFirstAddress As String
    If Me.TextBox1 = "" Then
        Me.ListBox1.Clear
        Exit Sub
    End If
    With Worksheets("Stammdaten")
        Set rng = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp))
    End With
    Set rngCell = rng.Find(Me.TextBox1.Value, LookIn:=xlValues, lookat:=xlPart)
    With Me.ListBox1
        .Clear
        .ColumnCount = 9
        .ColumnWidths = "3,9cm;2,5cm;2,5cm;2,6cm;2,5cm;3,5cm;3,5cm;3,5cm;3,5cm"
    End With
    If Not rngCell Is Nothing Then
        strFirstAddress = rngCell.Address
        Do
            With Me.ListBox1
                .AddItem
                .List(.ListCount - 1, 0) = rngCell.Value
                .List(.ListCount - 1, 1) = rngCell.Offset(0, 1).Value
                .List(.ListCount - 1, 2) = rngCell.Offset(0, 2).Value
                .List(.ListCount - 1, 3) = rngCell.Offset(0, 8).Value
                .List(.ListCount - 1, 4) = rngCell.Offset(0, 9).Value
                .List(.ListCount - 1, 5) = rngCell.Offset(0, 10).Value
                .List(.ListCount - 1, 6) = rngCell.Offset(0, 11).Value
                .List(.ListCount - 1, 7) = rngCell.Offset(0, 12).Value
                .List(.ListCount - 1, 8) = rngCell.Offset(0, 17).Value
                .List(.ListCount - 1, 9) = rngCell.Row
            End With
            Set rngCell = rng.FindNext(rngCell)
        Loop While Not rngCell Is Nothing And rngCell.Address <> strFirstAddress
    Else
       MsgBox "Schule nicht gefunden", 48
    End If

Es klappt alles. Aber ich möchte eine weitere Suche implementieren, die genauso aufgebaut ist, wie die Userform:Suchenform. Ich möchte jetzt aber wenn ich diese anklicke, dass die Zeile (Spalte A-N) in ein neues Tabellenblatt kopiert wird.

Am liebsten wäre mir es, wenn ich meine 70 Schulen in einer Listbox alle drin habe (mit Infos aus Zeile A-E) und dann per Häkchen setzen, diese Zeilen in ein neues Tabellenblatt übernommen werden. Also Haken setzen, auf übernehmen klicken und die Zeile (bestimmte Spalten) ist in einem neuen Tabellenblatt und zwar sortiert nach Schulname (Sortierfunktion bekomme ich auch selbst hin).

Vielleicht kann man mir weiterhelfen.
 

Anhänge

  • Beispiel.zip
    42,3 KB · Aufrufe: 326
Hi,
nur als Tipp, niemand mit gesundem Menschenverstand wird eine .zip von einem "Neuling" öffnen. Kopiere den Code(der interessant ist) hier rein :)
 
Jut, stimmt auch wieder.

Der Code ist oben drin, als Basis.
 
Hi,

wo hängts denn jetzt eigentlich? Wenn du den Code, den du gepostet hast, selbst geschrieben hast, solltest du das, was du beschrieben hast, auch selbst hinbekommen.
Erstell ne Userform, lies die gefüllten Zeilen als Auswahl ein, gib die ausgewählten in nem Array zurück und schreib ne Schleife welche die entsprechenden Zeilen in nen neues Blatt kopiert.

Wenn du konkrete Probleme benennen kannst wäre das ganz gut, aber ich glaube nicht dass dir jemand deinen kompletten Code schreibt.

Gruß
 
Ne, den Browser habe ich teilweise selbst hinbekommen mit Aufzeichnung von Makro und "Google".

Teilweise findet man ja auch Lösungen im Internet, da brauch man nix neues erfinden, bzw. die Boardmittel von Excel zu nutzen.

Aber jetzt hänge ich halt daran, dass ich diese Kontrollfunktion (wie ich sie benenne) hinbekommen will.

Also ich versuche es nochmal zu beschreiben.

Ich habe ein Tabellenblatt "Stammdaten". In diesem Tabellenblatt sind Informationen über Schulen. Jede Schule eine Zeile (jede Zeile von Spalte A-AM).

Ich hätte jetzt gerne per Userform eine ListBox in der diese Zeilen (nur die Spalten A-E) dargestellt werden und vor der Zeile soll ein Kästchen zum Haken setzen sein. Setze ich diesen Haken, dann soll er die Zeile in ein neues Tabellenblatt "Tabelle1" kopieren.

So hatte ich mir das vorgestellt. Vielleicht gibt es hier schon ne Lösung, da ich mit dem Makro aufzeichnen nicht weiterkomme.
 
Hey,

Range("A" & z & ":B" & z).Select
Selection.Copy Destination:=Range("C" & z & ":D" & z) <- Das soll kein Simley sein, sondern ": D" ohne das Leerzeichen

An diesem Beispiel wird die Zeilennummer an einer Laufvariablen (z) aus einer Schleife genommen (wirst du für die Suche auch benötigen, oder? ). Damit kopierst du einen Bereich und fügst ihn woanders ein. Kannst dann ja dazwischen noch sheet2.activate schreiben, dann sollte das auf dem anderen Tabellenblatt auftauchen.

Viele Grüße
 
... und was nicht PassT, wird passend gemacht. Den Satz kenne ich seit über 50 Jahren. :D

Also, das passt nun wirklich nicht optimal. Select und Activate sind meist total überflüssig, machen den Code unübersichtlich und bremsen nur ein Programm aus. So auch hier. Anmerkung: Ich habe jetzt nur Bezug auf deinen Codeschnipsel genommen und nicht inhaltlich nachgeprüft.

Willst du mehr dazu wissen? Excel-ist-sexy.de gibt Auskunft!
 
Zurück
Oben