Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datensatz in anderes Arbeitsblatt verschieben

Datensatz in anderes Arbeitsblatt verschieben
22.11.2006 14:00:33
Ben
Hallo,
Ich möchte mit einer Schaltfläche Datensätze, abhängig von einem Wert, von einem Arbeitsblatt in ein anderes verschieben und da das Ganze etwas kompliziert ist, habe ich ein Beispiel gemacht:
https://www.herber.de/bbs/user/38407.xls
Ich stelle mir das so vor, dass man im Arbeitsblatt 1. Stock z.B. bei Petra Meier die Zimmer-Nr. 105 mit 207 überschreibt und dann die Schaltfläche "Zeile verschieben" wählt. Dann wird die Zeile ins Arbeitsblatt 2. Stock verschoben und (idealerweise) unten bei der jeweils ersten freien Zeile angefügt. Wenn die neue Zimmer-Nr. mit 3 beginnt wird in das Arbeitsblatt 3. Stock verschoben.
Geht so etwas mit VBA?
Danke für jeden Tipp.
Gruss
Ben

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

Betreff
Datum
Anwender
Anzeige
AW: Datensatz in anderes Arbeitsblatt verschieben
23.11.2006 08:02:18
Stefan
Hallo Ben,
du brauchst hier eine Schleife.
Versuche mal den Code im Anfang, musst evt. noch bisschen rumbasteln, da ich nicht probiert habe.
dim i as Variant
dim ie as Variant
zähler=1
sheets("tabelle1").cells (1,1).select
for i = 1 to Sheets("tabelle1").range(endxp) (=hier wird von Zeile 1 bis zur letzten
beschriebenen Zeile die Werte abgearbeitet)
if cells((1,1)= "dein Wert" then
cells(1,1). copy
sheets ("tabelle2").select
cells(ie + zähler,1).select
selection. past (hier wird das kopierte eingefügt, ist aber nicht ganz vollständig,
einfach mit Makrorecorder aufzeichnen und das in den Code hier
einbauen)
end if
next i
next ie
Wie gesagt, hab es nicht probiert, must wahrscheinlich noch ein bisschen rumbasteln.
Gruß
Stefan
Anzeige
AW: Datensatz in anderes Arbeitsblatt verschieben
23.11.2006 10:04:53
Ben
Hallo Stefan
Habe versucht etwas rumzubasteln, bin aber nicht wirklich erfolgreich gewesen. Meine VBA-Kenntnisse sind einfach zu beschränkt.
1. Eine grundsätzliche Frage: Komme ich bei Deinem Ansatz mit 1 Schaltfläche "Zeilen verschieben" pro Arbeitsblatt aus, so dass alle Zeilen, die bei der Zimmer-Nr. z.B. mit einer 2 oder 3 beginnen in die jeweiligen Arbeitsblätter verschoben werden? Das wäre natürlich optimal.
2. Damit zusammenhängend: Muss ich bei "Dein Wert" eine Zimmer-Nr. eingeben oder kann ich da etwas wie 2* (für "beginnt mit 2") eingeben?
3. Habe mal folgenden Code probiert:

Private Sub CommandButton1_Click()
Dim i As Variant
Dim ie As Variant
zähler = 1
Sheets("tabelle1").Cells(1, 3).Select
For i = 1 To Sheets("tabelle1").Range(endxp)
If Cells(1, 1) = "207" Then
Cells(1, 1).copy
Sheets("2. Stock").Select
Cells(ie + zähler, 1).Select
Selection.copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If
Next i
Next ie
End Sub

Führt zur Fehlermeldung: Fehler beim Kompilieren. Next ohne For.
4. Datensätze verschieben: Ich kann nicht einfach ausschneiden und einfügen. Sonst gehen mir in meiner Originaldatei beim Ausschneiden die Formatierungen und auch die Comboboxen futsch. Ich müsste entweder kopieren, auf neuem Arbeitsblatt Inhalte einfügen und dann zurück gehen, um die Inhalte der kopierten Zeile zu löschen. Oder gibt es mit VBA eine Möglichkeit nur die Inhalte auszuschneiden?
Gruss
Ben
Anzeige
AW: Datensatz in anderes Arbeitsblatt verschieben
24.11.2006 14:38:42
Stefan
Hallo Ben,
sorry, das "next ie" las mal weg, hier muß dann im Blatt2 in z.B. einer Spalte erst nach der letzten beschriebenen Zeile gesucht werden und dann die Zeile darunter das Kopierte eingefügt werden.
Zu deiner 1. Frage: du kannst grundsätzlich bis zu 64 KB Makrogröße pro Button hinterlegen, und das ist schon eine ganze Menge, weiss ich aus eigner Erfahrung.
2."dein Wert" ist eine beliebige Variable, es kann eine Zahl sein, Buchstaben oder Wort oder auch Wörter, aber sobald was als Text behandelt wird, immer mit "".
4. Grundsätzlich kannst du alles, was du normal in Excel durch klicken verschiedener Buttuons machst z.B. Kopieren, Inhalte einfügen (nur Werte) auch als Makro aufzeichnen und dann in einem Stück abarbeiten lassen, es erspart also die viele rumklickerei, nur wenn du dann mit Variablen arbeiten willst, must du diese in das aufgezeichnete Makro noch ergänzen, das geht nicht anders.
Hier noch ein Buchtipp, ist sehr leicht zu lesen mit vielen praktischen Anwendungen und fertigen Makros: Excel VBA von Markt und Technik. Ich hab vor einem halben Jahr hiermit begonnen und möchte sagen, das meine Kenntnisse jetzt durchaus akzeptabel sind.
Falls du also noch weiteren Komfort für deine Datei möchtest, das Buch lohnt sich.
Gruß
Stefan
Anzeige
AW: Datensatz in anderes Arbeitsblatt verschieben
24.11.2006 15:29:28
Herbert
Hi,
"sheets ("tabelle2").select"
"cells(ie + zähler,1).select"
Was ist denn das für ein Sch...buch, aus dem du solchen Humbug lernst?
"das meine Kenntnisse jetzt durchaus akzeptabel sind."
Akzeptabel für wen? Als Antworter in diesem Forum sicher nicht.
mfg Herbert
AW: Datensatz in anderes Arbeitsblatt verschieben
26.11.2006 13:15:35
Ben
Hallo Herbert
Hast Du denn einen Lösungsvorschlag für mein Problem?
mfg
Ben
AW: Datensatz in anderes Arbeitsblatt verschieben
27.11.2006 14:08:50
Ben
Hallo Herbert
Super Dein Code, funktioniert 1A; vielen Dank schonmal. Konnte ihn auch auf meine Originaldatei anpassen. Nur noch 1 Problem habe ich: Ich möchte die Zeilen ja nicht kopieren sondern verschieben. Habe deshalb versucht den Code entsprechend abzuändern:
.
.
.
Sheets("1. Stock").Range(Zellen).Cut Ws.Cells(lngLZ, 1)
Set Ws = Nothing
End Sub
Ausschneiden funktioniert so auch, aber in meiner Originaldatei gehen dadurch die Formatierungen inkl. Comboboxen futsch (wie unter 4. bei meiner Antwort an Stefan beschrieben). Wenn ich manuell verschiebe, muss ich zuerst die Zeile kopieren, dann im anderen Arbeitsblatt Werte einfügen und zurück gehen, um den Inhalt der kopierten Zeile zu löschen.
Gibt es mit VBA eine Möglichkeit nur die Inhalte auszuschneiden oder kann man den "Umweg" über kopieren-löschen im Code hinterlegen?
mfg
Ben
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige