5.6k Aufrufe
Gefragt in Tabellenkalkulation von benjaminm Mitglied (631 Punkte)
Hallo @ all,

Ich brauche eure Hilfe.

Ich möchte über eine Userform Name und Vorname in einer Excel (2007)Datenbank (Tabelle1) suchen, den Eintrag (komplette Zeile) kopieren, Daten dann in Tabelle2 einfügen & dann den Datensatz aus der Tabelle1 löschen.

Wollte dies über den Makrorecorder aufzeichnen, bekomme es aber nicht hin!

Hat jemand dafür eine Lösung (VBA)?

MfG Benjamin

16 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Benjamin,

verwende zum Suchen den Befehl Find (in der VBA-Hilfe zu finden unter "Find-Methode")

Bis später,
Karin
0 Punkte
Beantwortet von benjaminm Mitglied (631 Punkte)
Hallo Karin,

da haben wir ja schon 2 Themen...

Hab zwar schon vorher was gefunden in der VBA Hilfe, bekomme damit aber nix auf die Reihe!

Hier mal ein Bsp. wie ich mir das vorstelle, aber mir fehlt da noch alles!
Wollte halt nur gerne so ne Map haben damit ich nicht immer 2400 Datensätze per Hand durchsuchen muss. Da kommt aber auch wieder was mit Abhängigkeiten von Combos ins Spiel, und ich habs immer noch nicht so drauf mit den Codes!

Hast du evtl. (oder auch wer anderes) die Möglichkeit mir was zu bauen? Will nicht schmarotzen, aber mir fehlen halt noch soviel Zusammenhänge.
Bastle mir immer irgendwie was zusammen damit es funtz!
Hierzu hab ich aber leider noch garnichts.
Und weiß auch nicht ob das geht wie ich mir das vorstelle!

Ich würde gerne in Combobox1 nach den Anfangsbuchstaben (alphabetisch) aus Spalte "B" suchen, dann in Combobox2 die Namen filtern die mit den Buchstaben in CB1 übereinstimmen,
und dann in CB3 die Vornamen gefilter bekommen.
Wenn ich dann den Betreffenden Eintrag habe, diesen kopieren, Zeile löschen und in Tabelle2 den Datensatz aus der Zwischanablage in die letzte freie Zeile einfügen.

Ist das Machbar?
MfG Benjamin
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Benjamin,

machbar ist mit VBA (fast) alles, aber dazu sollte man schon die entsprechenden Kenntnisse besitzen. Nichts für ungut, aber ich würde an deiner Stelle erst einmal mit "kleineren Brötchen" anfangen - das was du vorhast, grenzt an Auftragsprogrammierung und so etwas macht eine Softwarefirma für teuer Geld.

Wenn du mit Find nicht klar kommst - es gibt noch die Möglichkeit, das Tabellenblatt per Autofilter zu filtern - das kannst du mit dem Makrorekorder aufzeichnen und anstelle der beim Aufzeichnen fest eingetragenen Filterkriterien setzt du dann den Inhalt deiner ComboBoxen. Das alles schreibst du in das Change-Ereignis der 1. bzw. 2. ComboBox.

Das Kopieren kannst du ebenfalls mit dem Makrorekoerder aufzeichnen, nur dass du dann anstelle der festen Zeilenbezeichnung der Zielzeile eine variable für die erste freie Zeile der Zieltabelle setzt. Die erst freie Zeile in Spalte A kann man z.B. auf diese Weise feststellen:
Dim loLetzte As Long
With Worksheets("Zieltabelle")
loLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
End With


Bis später,
Karin
0 Punkte
Beantwortet von benjaminm Mitglied (631 Punkte)
Hallo Karin,

okay, dann werd ich versuchen kleiner Brötchen zu backen.

Hab jetzt etwas gebastelt, und das mit dem Sortieren haut schon hin!

Aber ich komme ´mit der Find Methode nicht klar!
Hab nun einige Beiträge gelesen, jedoch funtz das bei mir nicht!

Wie muss ich so eine Find Methode denn aufbauen?
Hab da mir einiges zusammen gesucht, aber ganz rund ist das alles nicht!
Bekomme nun die Datensätze nicht in meine Combobox (oder sollte ich da mit nem Listenfeld arbeiten?).

Kannst du mir da noch mal helfen?
Und die Sache mit dem rauskopieren und einfügen in "Tabelle3", krieg ich mit dem Makrorecorder auch nicht auf die Reihe, weil ich die Klicks in der Userform nicht aufzeichnen kann.

Wäre nett wenn du mir noch mal zur Hand gehen könntest.

Hier die Datei, mit dem was ich hab.

MfG & vielen Dank
Benjamin
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Benjamin,
hab in deiner Datei: Sortieren eine neue UserForm angelegt.
Auswahl nach Name dann Auswahl nach Vorname.
Daten in Tabelle3 eintragen.
Zeile löschen.
Man kann natürlich auch die Befehle (Auswahl, Eintragen, Löschen)
noch miteinander verbinden.

Gruß
fedjo
0 Punkte
Beantwortet von benjaminm Mitglied (631 Punkte)
Hallo Fedjo,

hab versucht deine Datei in meine einzubauen, bin aber scheinbar zu blöd.
Ich wollte gerne deinen Code in diese Datei einbauen.
Und über den Combobutton "Saustritt" auf TB "Auswahl" starten, jedoch fehlen mir dann die RowSources.

Könntest du mir da helfen?

MfG Benjamin
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Benjamin,
so ganz klar sind mir deine Angaben nicht.
Auf welchen TB stehen die gesuchten Namen Vornamen?
Auf welchen TB sollen die Namen, Vornamen eingetragen werden?

Gruß
fedjo
0 Punkte
Beantwortet von benjaminm Mitglied (631 Punkte)
Hallo Fedjo,

die Datei war noch nicht gefüllt, da dies die Testdatei war, sorry.

Die Namen sollen in TB "Schueler" stehen, und in TB "Schueleraustritt" beim Löschen aus TB "Schueler" geschrieben werden.

Hier noch mal die befüllte Datei.

MfG Benjamin
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Benjamin,
habe in deine Datei ein TB "Schueleraustritt" eingefügt. Nach dem Auswählen Namen, Vornamen kann die ganze Zeile in das TB "Schueleraustritt" eingetragen werden.
Die Zeile wird dadurch automatisch gelöscht und der Autofilter zurückgesetzt.
Durch das löschen der Zeile funktioniert natürlich deine Wenn Formel nicht mehr.

Gruß
fedjo
0 Punkte
Beantwortet von benjaminm Mitglied (631 Punkte)
Hallo fedjo,

Danke für deine Hilfe, sieht schon gut aus.

Jedoch gibs da noch nen Problem, und zwar:

Comboboxen geben Name und Vorname aus, jedoch beim Klicken auf Eintragen Löschen... löscht und kopiert er alle Einträge mit dem Ausgewählten Vornamen in das TB "SchuelerAustritt"!
Das heißt z.B. bei Name "Becker" Vorname "Finn", löscht er mir auch gleich die Datensätze "Lindemann" und "Scheele" mit dem Vornamen "Finn" !

Kannst du da noch mal drüber schauen?

Und hättest du die Güte dir evtl. noch ein weiteres Problem in der gleichen Datei anzu schauen?
In der Userform1 geben ich Neuzugänge ein, jedoch läuft er da immer auf einen Fehler beim Übertrag vom Formular in die Tabelle "Schueler"!
und zwar hier:

Private Sub ComboBox1_Change()
Dim loZaehler As Long
Dim varBereich As Variant
Dim objWerte As Object
Dim inZeile As Integer
inZeile = ComboBox1.ListIndex + 1
Set objWerte = CreateObject("Scripting.Dictionary")
With Worksheets("Lehrer")
varBereich = Application.Transpose(.Range("B" & inZeile & ":" & .Range("B" & inZeile).End(xlToRight).Address))
End With
For loZaehler = LBound(varBereich) To UBound(varBereich)
If varBereich(loZaehler, 1) <> "" Then objWerte(varBereich(loZaehler, 1)) = 0
Next
ComboBox2.List = objWerte.keys
If ComboBox2.ListCount > 0 Then ComboBox2.ListIndex = 0
Set objWerte = Nothing

End Sub

Fehlermeldung im Debug: " Laufzeitfehler 1004, Anwendungs- oder objektdefinierter Fehler" und es wird die Zeile markiert (Fettgedruckte Zeile)

Weißt du was da falsch ist?

Vielen dank für deine Hilfe.
MfG Benjamin
...