Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
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
Inhaltsverzeichnis

Zellbereich in anderes Tabelenbereich verschieben

Zellbereich in anderes Tabelenbereich verschieben
23.05.2018 14:41:05
bneyer
Hallo lieber Helfer
In einer Tabelle habe ich zwei Sheets ("Brutto-Kontoplan" und "Kontoplan").
Aus dem Sheet "Brutto-Kontoplan" möchte ich jeweils die Zellen Ax:Ex (x steht für eine beliebige Zeilennummer) in das Sheet Kontoplan verschieben (soll also dann im "Brutto-Kontoplan" nicht mehr vorhanden sein) bei denen in der Spalte E ein X steht.
In der Tabelle "Kontoplan" soll der erste Zellbereich dann in Zelle A100:E100 verschoben werden.
Die nächste Zeile, die verschoben werden muss, sollte nun aber erst nach 15 Leerzeilen eingefügt werden.
Kann mir da jemand helfen? Ich wäre sehr dankbar dafür.

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellbereich in anderes Tabelenbereich verschieben
23.05.2018 15:48:38
Werner
Hallo,
und wie soll das Ganze funktionieren. Soll das Makro automatisch "verschieben" sobald in "Brutto-Kontoplan" in Spalte E ein X eingetragen wird?
Gruß Werner
AW: Zellbereich in anderes Tabelenbereich verschieben
23.05.2018 15:50:40
bneyer
...das wäre natürlich genial. Doch zwingend ist das nicht.
Ich rechne damit, dass der Makro einfach gestartet werden könnte.
Doch wenns auch so rum geht... ;)
Besten Dank vorerst einmal!
AW: Zellbereich in anderes Tabelenbereich verschieben
23.05.2018 16:15:58
Werner
Hallo,
das Makro gehört ins Codemodul von "Brutto-Kontoplan"
-Rechtsklick auf den Blattreiter - Code anzeigen - Code rechts ins Codefenster kopieren
Sobald in Spalte E ein "x" eingegeben wird werden die Daten übertragen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim loLetzte As Long, wsZiel As Worksheet
Set wsZiel = ThisWorkbook.Worksheets("Kontoplan")
With wsZiel
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(16, 0).Row
If .Cells(100, 1) = "" Then loLetzte = 100
End With
If Target.Column = 5 Then
If Target.Row > 1 Then
If Target.Count = 1 Then
If Not Target Is Nothing Then
If UCase(Target.Value) = "X" Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Copy _
wsZiel.Cells(loLetzte, 1)
Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Delete shift:=xlUp
End If
End If
End If
End If
End If
End Sub
Gruß Werner
Anzeige
AW: Zellbereich in anderes Tabelenbereich verschieben
23.05.2018 16:40:00
Gerd
Hallo Werner,
wann ist Target = Nothing u. wie kann man es dann zuvor zählen?
Gruß Gerd
AW: Zellbereich in anderes Tabelenbereich verschieben
23.05.2018 17:34:34
bneyer
Whow!
Das funktioniert schon recht gut :) Vielen Dank einmal bis hierher.
Zwei kleine Wünsche hätte ich vorerst noch...
1. Könnte man das Einfügen als "nur Text" machen?
2. Müsste das Einfügen jeweils nicht in der Spalte A sondern in Spalte C erfolgen.
Könntest du das noch machen?
Wäre toll!
AW: Zellbereich in anderes Tabelenbereich verschieben
23.05.2018 17:43:26
Werner
Hallo,
dann so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim loLetzte As Long, wsZiel As Worksheet
Set wsZiel = ThisWorkbook.Worksheets("Kontoplan")
With wsZiel
loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Offset(16, 0).Row
If .Cells(100, 3) = "" Then loLetzte = 100
End With
If Target.Column = 5 Then
If Target.Row > 1 Then
If Not Target Is Nothing Then
If Target.Count = 1 Then
If UCase(Target.Value) = "X" Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Copy
wsZiel.Cells(loLetzte, 3).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Delete shift:=xlUp
End If
Else
MsgBox "Keine Mehrfachauswahl."
End If
End If
End If
End If
End Sub
Gruß Werner
Anzeige
uups..
23.05.2018 17:44:28
Werner
Hallo Gerd,
da ist mir wohl die Reihenfolge durcheinander geraten. Danke für den Hinweis.
Gruß Werner
AW: Zellbereich in anderes Tabelenbereich verschieben
23.05.2018 17:47:18
Gerd
Hallo Werner,
wann ist Target = Nothing u. wie kann man es dann zuvor zählen?
Gruß Gerd
AW: upsups
23.05.2018 17:53:44
Gerd
Oje, das Forumshandling! :-)
Hallo Werner,
ich hätte die Frage auch nach der Column-Eigenschaft von Target stellen können.
M.E. ist das (nicht abgeänderte) Target in dieser Ereignisprozedur
als integriertes Argument nie Nothing.
Gruß Gerd
AW: upsups
24.05.2018 08:12:55
bneyer
Vielen herzlichen Dank euch allen!
Das klappt so prima! :)
Wäre es denkbar, dass das Umgekehrte auch noch machbar wäre, sodass beim Klick auf das X die Zellen wieder in den Brutto-Kontoplan verschoben würden?
P.S. Hat die Frage mit dem "Target" noch eine Relevanz oder wurde das bereits mit dem letzten Makro erledigt?
Kann man eigentlich solche Makros auch Schritt für Schritt mittels F8 laufen lassen?
Anzeige
AW: upsups
24.05.2018 08:35:55
Werner
Hallo,
geht natürlich auch, dafür würde ich aber das "Doppelklick-Ereignis" verwenden. Sprich bei Doppelklick im Blatt "Kontoplan" Spalte G geht der angeklickte Datensatz wieder zurück nach "Brutto-Kontoplan".
Die Frage bzgl. dem If Not Target... hat keine Relevanz, ist nur überflüssig.
Hier nochmal beide Codes. Beide gehören natürlich ins Codemodul des jeweiligen Blattes.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim loLetzte As Long, wsZiel As Worksheet
Set wsZiel = ThisWorkbook.Worksheets("Kontoplan")
With wsZiel
loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Offset(16, 0).Row
If .Cells(100, 3) = "" Then loLetzte = 100
End With
If Target.Column = 5 Then
If Target.Row > 1 Then
If Target.Count = 1 Then
If UCase(Target.Value) = "X" Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Copy
wsZiel.Cells(loLetzte, 3).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Delete shift:=xlUp
End If
Else
MsgBox "Keine Mehrfachauswahl."
End If
End If
End If
Set wsZiel = Nothing
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim loLetzte As Long, wsZiel As Worksheet
Set wsZiel = Worksheets("Brutto-Kontoplan")
With wsZiel
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
End With
If Target.Column = 7 Then
If Target.Row >= 100 Then
Cancel = True
Target.ClearContents
Range(Cells(Target.Row, 3), Cells(Target.Row, 7)).Copy
wsZiel.Cells(loLetzte, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range(Cells(Target.Row, 3), Cells(Target.Row, 7)).Delete shift:=xlUp
End If
End If
Set wsZiel = Nothing
End Sub
Direkt kannst du solche Makros nicht mit F8 durchsteppen. Dazu mußt du im Makro einen Haltepunkt setzen. Klick mal im Makroeditor in einer Zeile im Code in die schmale Spalte direkt links vom Codefenster. Dort erscheint dann ein brauner Punkt und die entsprechende Codezeile wird braun eingefärbt. Damit hast du in dieser Zeile einen Haltepunkt gesetzt.
Jetzt mußt du im entsprechenden Blatt das Makro durch die entsprechende Aktion starten. Es wird automatisch ins Codefenster gewechselt und das Makro bleibt an deinem Haltepunkt stehen. Jetzt kannst du den weiteren Makrolauf mit F8 durchsteppen. Anschließend den Haltepunkt wieder entfernen.
Gruß Werner
Anzeige
AW: upsups
24.05.2018 15:32:31
bneyer
Hallo lieber Werner
Vielen herzlichen Dank für deine Hilfe!
Ich beneide Menschen, die mit einer derartigen Virtuosität solche Dinge einfach im Griff haben! Whow!
Hier noch eine Frage.
Auf dem Blatt "Kontoplan" habe ich bereits einen Makro mit demselben Namen drin, der eine andere Funktion - ebenfalls mit Doppelklick - ausführt. :/
Stellt dies ein Problem dar?
Gruss Bernhard
AW:Nein
24.05.2018 15:40:12
Gerd
Hallo Bernhard,
du musst nur beide Makros in einer Sheet-Ereignis-Prozedur zusammenfassen, weil man diese nur einmal je
Blatt verwenden kann.
Gruß Gerd
Gerne u. Danke für die Rückmeldung und...
24.05.2018 15:44:34
Werner
Hallo,
...na ja, Virtuosität... das lass ich mal unkommentiert.
Zu deiner Frage siehe die Antwort von Gerd.
Gruß Werner
Anzeige
AW: Gerne u. Danke für die Rückmeldung und...
24.05.2018 16:12:16
bneyer
Hallo Werner
Danke wiederum für deine Antwort!
Hab's so gemacht, funktioniert aber noch nicht so ganz und suche gerade, woran's liegen könnte.
Machst du auch Auftragsprogrammierungen?
Ich stehe da mit einer Aufgabe ziemlich an...
AW: Gerne u. Danke für die Rückmeldung und...
24.05.2018 16:36:24
Werner
Hallo,
dann zeig mal das Makro das du da schon hast.
Und Auftragsprogrammierung: Nein, da bin ich ein viel zu kleines Licht dafür. Das macht z.B. der Forenbetreiber. Schau mal den Link hier in der Titelzeile "Auftragsprogrammierung"
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung und...
24.05.2018 17:01:45
bneyer
Ja, das habe ich gesehen und mit Hans auch bereits Kontakt aufgenommen. Er hat leider keine Zeit und Ferien stehen bevor.
Könnten wir uns ausserhalb dieses Forums weiter unterhalten?
bneyer@beratung-oe.ch
Anzeige
Du hast Post. o.w.T.
24.05.2018 22:44:41
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige