Automatisches Kopieren in anderes Tabellenblatt

Hallo!
Ich befürchte, mit diesem Vorhaben habe ich mich jetzt wirklich übernommen, denn seit Tagen beschäftige ich mich intensiv damit, und kriege es einfach nicht hin. Hier wurde mir schon sehr viel geholfen, vielleicht klappt es auch diesmal?

Ich möchte, dass wenn in Spalte A von Blatt 1 und Blatt 2 ein „v“ eingetragen wird (oder eine Zahl, falls Text Probleme macht), die dazugehörige Zeile sich nach Blatt 3 kopiert, ohne dass der Eintrag in Blatt 1 und 2 gelöscht wird.

Hier die Beispieltabelle (hoffentlich):
http://rapidshare.com/files/299096883/Mappe2.xls.html

Herzliche Grüße, Katharina

Hallo Maria Stuart :smile:),

Ich möchte, dass wenn in Spalte A von Blatt 1 und Blatt 2 ein
„v“ eingetragen wird (oder eine Zahl, falls Text Probleme
macht), die dazugehörige Zeile sich nach Blatt 3 kopiert, ohne
dass der Eintrag in Blatt 1 und 2 gelöscht wird.

erstelle mal in deinem Beispielnblatt „Verkauf“ manuell wie das Ergebnis aussehen soll, dann muß ich vielleicht weniger nachfragen :smile:
Und lade das dann hoch.

Gruß
Reinhard

Hallo Maria Stuart :smile:), oh!!! …aber darüber mache ich mir jetzt erstmal keine Gedanken…

Ich möchte, dass wenn in Spalte A von Blatt 1 und Blatt 2 ein
„v“ eingetragen wird (oder eine Zahl, falls Text Probleme
macht), die dazugehörige Zeile sich nach Blatt 3 kopiert, ohne
dass der Eintrag in Blatt 1 und 2 gelöscht wird.

erstelle mal in deinem Beispielnblatt „Verkauf“ manuell wie
das Ergebnis aussehen soll, dann muß ich vielleicht weniger
nachfragen :smile:
Und lade das dann hoch.

Gruß
Reinhard

Hallo Reinhard,

gerne doch! :wink:

http://rapidshare.com/files/299238102/Mappe3.xls.html

Gruß Katharina

Hallo Maria,

Hallo Maria Stuart :smile:), oh!!! …aber darüber mache ich mir jetzt erstmal keine Gedanken…

so stehst aber in deiner Mappe und das du Königin bist :smile:

Biste nicht?

http://rapidshare.com/files/299238102/Mappe3.xls.html

Bin müd, außerdem führt Mist Hoeneß mit 4:0, keine Lust mehr heute :frowning:((, ich schau morgen.

Gruß
Reinhard

Hallo Maria,

Hallo Maria Stuart :smile:), oh!!! …aber darüber mache ich mir jetzt erstmal keine Gedanken…

so stehst aber in deiner Mappe und das du Königin bist :smile:

Biste nicht?

Ach ja stimmt, wie konnte ich das vergessen?!

Bin müd, außerdem führt Mist Hoeneß mit 4:0, keine Lust mehr
heute :frowning:((, ich schau morgen.

Gruß
Reinhard

Dann warte ich voller Ungeduld und Vorfreude auf morgen :wink:!

Gute Nacht,
Die Königliche

Dann warte ich voller Ungeduld und Vorfreude auf morgen :wink:!

Moin Katharina,

am besten, damit wir von gleicher basis ausgehen, gehen wir von deiner Beispielmappe aus.
leg mal vom Blatt Verrkauf eine Kopie als viertes Blatt an, sodaß du dein manuelles mit dem per Code im Blatt Verkauf erstellten vergleichen kannst.

Dann, Alt+F11, Doppelklick auf „Diese Arbeitsmappe“, dort kopierst du nachstehenden Code rein, dann VB-Eitor schließen.
Der Code reagiert automatisch auf jede Änderung in Spalte A von Blatt1 und Blatt2 und füllt dann dementsprechend das Blatt Verkauf neu
aus.

Da ich ja die Liste der Datümer nicht habe überlasse ich dir die ABM-Maßnahme da das Datum nachzutragen :smile:)

Gruß
Reinhard

Option Explicit
'
Private Sub Workbook\_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Wks1 As Worksheet, Wks2 As Worksheet, wksV As Worksheet
Dim Zelle As Range, Zei As Long, ZeiV As Long
If Sh.Name "Ware April" And Sh.Name "Ware Mai" Then Exit Sub
Set Wks1 = Worksheets("Ware April")
Set Wks2 = Worksheets("Ware Mai")
Set wksV = Worksheets("Verkauf")
Set Target = Intersect(Target, Sh.Columns(1))
If Target Is Nothing Then Exit Sub
Application.ScreenUpdating = False
With wksV
 .UsedRange.Clear
 .Range("A1:smiley:1") = Split("Datum Einkauf Beschreibung Verkauf")
 .Columns(2).NumberFormat = "#,##0.00 $"
 .Columns(4).NumberFormat = "#,##0.00 $"
 ZeiV = 2
 With Wks1
 For Zei = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
 If .Cells(Zei, 1).Value = "v" Then
 wksV.Cells(ZeiV, 2).Value = .Cells(Zei, 3).Value
 wksV.Cells(ZeiV, 4).Value = .Cells(Zei, 5).Value
 wksV.Cells(ZeiV, 3).Value = .Cells(Zei, 4).Value
 ZeiV = ZeiV + 1
 End If
 Next Zei
 End With
 With Wks2
 For Zei = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
 If .Cells(Zei, 1).Value = "v" Then
 wksV.Cells(ZeiV, 2).Value = .Cells(Zei, 3).Value
 wksV.Cells(ZeiV, 4).Value = .Cells(Zei, 5).Value
 wksV.Cells(ZeiV, 3).Value = .Cells(Zei, 4).Value
 ZeiV = ZeiV + 1
 End If
 Next Zei
 End With
 .Cells(ZeiV, 2).Value = "Summe " & .Cells(1, 2).Value
 .Cells(ZeiV, 4).Value = "Summe " & .Cells(1, 4).Value
 .Cells(ZeiV + 1, 2).Value = Application.Sum(.Range("B2:B" & ZeiV - 1))
 .Cells(ZeiV + 1, 4).Value = Application.Sum(.Range("D2:smiley:" & ZeiV - 1))
 With .Range("B2:smiley:" & ZeiV - 1).Font
 .Name = "Arial"
 .Size = 8
 .ColorIndex = 3
 End With
End With
Application.ScreenUpdating = True
End Sub

Moin, moin!

Oh, das sieht nach Arbeit aus, nach viel Arbeit!
Im Moment nur meinen allerherzlichsten Dank schon mal vorweg, ungetestet leider, denn jetzt muss ich erstmal arbeiten gehen, am Abend setze ich mich ran. D.h., ich genieße noch den ganzen Tag voller Vorfreude auf den Abend, wenn der erste Testlauf startet!

Beste Grüße, Katharina

Mensch Reinhard, ich weiß nicht was ich sagen soll… Es klappt!!! Nicht dass ich dran gezweifelt hätte, aber im Leben hätte ich das nicht hingekriegt! Dafür meine aufrichtige Bewunderung.

Jetzt gib mir Zeit, viel Zeit, ich werde das jetzt Zeile für Zeile durcharbeiten und versuchen zu verstehen und dann versuchen, an meine „wirkliche“ Tabelle anzupassen, die natürlich nicht nur 2 Blätter hat, die beachtet werden müssen, sondern 12, weil ja ein Jahr auch 12 Monate hat. Aber da stürze ich mich jetzt gerne beherzt selbst hinein, es sei denn, es gibt gleich von vorne herein einen Grund, dass 12 zu viel sind?!

Ach, und was die ABM „Datümer“ betrifft: Wäre denn dieses unglaublich praktische Helferlein auch dazu zu bringen, immer in die Datumspalte von Blatt 3 das Datum einzutragen, an dem das „v“ in Blatt 1 oder 2 getippt wird? Würde ich also heute ein „v“ eintippen, stünde da 29.10.? Das wär ja noch der Oberhammer!!!(ich hoffe, es geht nicht zu weit, noch darum zu bitten?)

Für heute erstmal vielen, vielen Dank,
Katharina

Hallo Reinhard!

Jetzt gib mir Zeit, viel Zeit, ich werde das jetzt Zeile für
Zeile durcharbeiten und versuchen zu verstehen und dann
versuchen, an meine „wirkliche“ Tabelle anzupassen, die
natürlich nicht nur 2 Blätter hat, die beachtet werden müssen,
sondern 12, weil ja ein Jahr auch 12 Monate hat. Aber da
stürze ich mich jetzt gerne beherzt selbst hinein, es sei
denn, es gibt gleich von vorne herein einen Grund, dass 12 zu
viel sind?!

Das ging ja schneller als erwartet, ich habs hingekriegt, war nicht mal sooo schwer :wink:

Bleibt also nur noch diese Kleinigkeit:

Ach, und was die ABM „Datümer“ betrifft: Wäre denn dieses
unglaublich praktische Helferlein auch dazu zu bringen, immer
in die Datumspalte von Blatt 3 das Datum einzutragen, an dem
das „v“ in Blatt 1 oder 2 getippt wird? Würde ich also heute
ein „v“ eintippen, stünde da 29.10.? Das wär ja noch der
Oberhammer!!!(ich hoffe, es geht nicht zu weit, noch darum zu
bitten?)

Bis jetzt läufts super, bin sehr stolz auf uns, herzliche Grüße, Katharina

Hallo Katharina,

Jetzt gib mir Zeit, viel Zeit, ich werde das jetzt Zeile für
Zeile durcharbeiten und versuchen zu verstehen und dann
versuchen, an meine „wirkliche“ Tabelle anzupassen, die
natürlich nicht nur 2 Blätter hat, die beachtet werden müssen,
sondern 12, weil ja ein Jahr auch 12 Monate hat. Aber da
stürze ich mich jetzt gerne beherzt selbst hinein, es sei
denn, es gibt gleich von vorne herein einen Grund, dass 12 zu
viel sind?!

nein, 12 ist keine Grenze, die liegt bei 16000 oder 32000 oder ist unbegrenzt bis dein Computerspeicher platzt :smile:)

Aber dann unten mit dem Blattregister zu tabelle10000 zu hüpfen kann Scrollarbeit bedeuten*gg*
Naja, dafür gibst dann wieder vba um da eine Art Tabellenauswahl zu steuern die praktikabel ist.

normalerweise soll man in Excel immer sprechende, also ggfs. längere Namen nehmen, aber bei Monaten ist das nicht nötig, nenn die Blätter M1,M2, nur 1,2, usw. Ist praktischer für das Blattregister unten zum Blattwechsel.

Ach, und was die ABM „Datümer“ betrifft: Wäre denn dieses
unglaublich praktische Helferlein auch dazu zu bringen, immer
in die Datumspalte von Blatt 3 das Datum einzutragen, an dem
das „v“ in Blatt 1 oder 2 getippt wird? Würde ich also heute
ein „v“ eintippen, stünde da 29.10.? Das wär ja noch der
Oberhammer!!!(ich hoffe, es geht nicht zu weit, noch darum zu
bitten?)

Kein Akt, siehe untenstehende Mappe. In Spalte H siehst du eine Hilfsspalte pro Blatt, in der steht dann das Datum.
Dies erscheint dann in A von Verkauf.
Derzeit steht da noch die Uhrzeit. Das auf datum zu ändern ist easy.
Es geht jetzt aber darum daß du die mappe auf Herz und Nieren testst.
Und da wäre es kontraproduktiv hätte ich da das Datum eingetragen. Dann müßtest du ja immer die Systemuhr abändern um ein anderes datum zu erhalten.

Jetzt mit Anzeige der Sekunden kannst du das makro viel besser testen.
Eine Fragestellung ist sowieso och offen, du löschst irgendwo ein v, soll dann die Zeit/Datum aus H gleich mitverschwinden oder stehen bleiben?

Achja, anstatt H kannst du auch eine weiter rechts stehende Spalte nehmen oder die Schriftfarbe auf weiß setzen, dann störts die Optik nicht.
H ist die 8te Spalte, ändere also bei deiner Vba-Programmierung bei Spaltenwwechsel die 8 in die neue Spaltenzahl.

http://www.hostarea.de/server-10/Oktober-f1d37901bf.xls

Gruß
Reinhard

Hallo Reinhard, heute erst bin ich dazu gekommen, die Änderungen auszuprobieren.

Ach, und was die ABM „Datümer“ betrifft: Wäre denn dieses
unglaublich praktische Helferlein auch dazu zu bringen, immer
in die Datumspalte von Blatt 3 das Datum einzutragen, an dem
das „v“ in Blatt 1 oder 2 getippt wird? Würde ich also heute
ein „v“ eintippen, stünde da 29.10.? Das wär ja noch der
Oberhammer!!!(ich hoffe, es geht nicht zu weit, noch darum zu
bitten?)

Kein Akt, siehe untenstehende Mappe. In Spalte H siehst du
eine Hilfsspalte pro Blatt, in der steht dann das Datum.
Dies erscheint dann in A von Verkauf.
Derzeit steht da noch die Uhrzeit. Das auf datum zu ändern ist
easy.
Es geht jetzt aber darum daß du die mappe auf Herz und Nieren
testst.
Und da wäre es kontraproduktiv hätte ich da das Datum
eingetragen. Dann müßtest du ja immer die Systemuhr abändern
um ein anderes datum zu erhalten.

Jetzt mit Anzeige der Sekunden kannst du das makro viel besser
testen.

Ich habe es gründlich getestet, läuft einwandfrei!
Müsste jetzt nur noch wissen, was genau ich eingeben muss statt
If Target.Value = „v“ Then Sh.Cells(Target.Row, 8) = Now und
.Columns(1).NumberFormat = „hh.mm.ss“
damit da statt der Uhrzeit das Datum steht!

Eine Fragestellung ist sowieso och offen, du löschst irgendwo
ein v, soll dann die Zeit/Datum aus H gleich mitverschwinden
oder stehen bleiben?

Nee, das ist sogar gut, dass das stehen bleibt! Weil wenn ich erneut ein „v“ eingebe, korrigiert sich das dann auch in die neue Zeit/Datum. Perfekt!

Achja, anstatt H kannst du auch eine weiter rechts stehende
Spalte nehmen oder die Schriftfarbe auf weiß setzen, dann
störts die Optik nicht.
H ist die 8te Spalte, ändere also bei deiner
Vba-Programmierung bei Spaltenwwechsel die 8 in die neue
Spaltenzahl.

Ja, bei mir muss es die 14 sein, weil ich nochn paar mehr Spalten hab, hat alles geklappt!

http://www.hostarea.de/server-10/Oktober-f1d37901bf.xls

Vielen Dank und herzliche Grüße, Katharina

Hallo Katharina,

Ich habe es gründlich getestet, läuft einwandfrei!

schön.

Müsste jetzt nur noch wissen, was genau ich eingeben muss
statt

If Target.Value = „v“ Then Sh.Cells(Target.Row, 8) = Now

If Target.Value = „v“ Then Sh.Cells(Target.Row, 14) = Date

.Columns(1).NumberFormat = „hh.mm.ss“

.Columns(1).NumberFormatLocal = „TT.MM.JJ“
oder
.Columns(1).NumberFormat = „DD.MM.YY“
Tipp, wenn was schräg läuft , MM in mm wechseln oder umgedreht.

das Format der Hilfsspalten auch noch anpassen nach Wunsch.

Gruß
Reinhard

1 „Gefällt mir“

Hallo Reinhard,
wie nicht anders zu erwarten, auch das perfekt!

Wenn es mir erlaubt ist, noch eine einzige, hoffentlich wirklich die letzte Bitte (zu diesem Thema:wink:):

Könntest Du es jetzt noch schaffen, dass die Summe aus dem Verkauf immer auch noch zusätzlich fix in einer anderen Zelle steht, z.B. F4?!
Ich brauche sie nämlich für weitere Blätter zum Weiterrechnen, da sie sich derzeit aber immer mit jedem neuen Eintrag verschiebt, krieg ich das nicht hin!
Ich denke, dann bin ich restlos zufriedengestellt und die Tabelle ist echt schön geworden!
Herzliche Grüße, Katharina

Hallo Katharina,

Könntest Du es jetzt noch schaffen, dass die Summe aus dem
Verkauf immer auch noch zusätzlich fix in einer anderen Zelle
steht, z.B. F4?!

siehe nachstehenden Code.

Ich brauche sie nämlich für weitere Blätter zum Weiterrechnen,
da sie sich derzeit aber immer mit jedem neuen Eintrag
verschiebt, krieg ich das nicht hin!

Ich würde das grundsätzlich anders angehen.
Ich würde die Summen oben in Zeile 1 und/oder 2 schreibn lassen und diese zeilen fisoeren, dann sieht man die immer, egal wie lang die Liste ist.

Option Explicit
'
Private Sub Workbook\_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Wks1 As Worksheet, Wks2 As Worksheet, wksV As Worksheet
Dim Zelle As Range, Zei As Long, ZeiV As Long
If Sh.Name "Ware April" And Sh.Name "Ware Mai" Then Exit Sub
Set Wks1 = Worksheets("Ware April")
Set Wks2 = Worksheets("Ware Mai")
Set wksV = Worksheets("Verkauf")
Set Target = Intersect(Target, Sh.Columns(1))
If Target Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If Target.Value = "v" Then Sh.Cells(Target.Row, 8) = Now
With wksV
 .UsedRange.Clear
 .Range("A1:smiley:1") = Split("Datum Einkauf Beschreibung Verkauf")
 .Columns(1).NumberFormat = "hh.mm.ss"
 .Columns(2).NumberFormat = "#,##0.00 $"
 .Columns(4).NumberFormat = "#,##0.00 $"
 .Cells(4, 6).NumberFormat = "#,##0.00 $"
 ZeiV = 2
 With Wks1
 For Zei = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
 If .Cells(Zei, 1).Value = "v" Then
 wksV.Cells(ZeiV, 1).Value = .Cells(Zei, 8).Value
 wksV.Cells(ZeiV, 2).Value = .Cells(Zei, 3).Value
 wksV.Cells(ZeiV, 4).Value = .Cells(Zei, 5).Value
 wksV.Cells(ZeiV, 3).Value = .Cells(Zei, 4).Value
 ZeiV = ZeiV + 1
 End If
 Next Zei
 End With
 With Wks2
 For Zei = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
 If .Cells(Zei, 1).Value = "v" Then
 wksV.Cells(ZeiV, 1).Value = .Cells(Zei, 8).Value
 wksV.Cells(ZeiV, 2).Value = .Cells(Zei, 3).Value
 wksV.Cells(ZeiV, 4).Value = .Cells(Zei, 5).Value
 wksV.Cells(ZeiV, 3).Value = .Cells(Zei, 4).Value
 ZeiV = ZeiV + 1
 End If
 Next Zei
 End With
 .Cells(ZeiV, 2).Value = "Summe " & .Cells(1, 2).Value
 .Cells(ZeiV, 4).Value = "Summe " & .Cells(1, 4).Value
 .Cells(ZeiV + 1, 2).Value = Application.Sum(.Range("B2:B" & ZeiV - 1))
 .Cells(ZeiV + 1, 4).Value = Application.Sum(.Range("D2:smiley:" & ZeiV - 1))
 .Cells(4, 6).Value = Application.Sum(.Range("D2:smiley:" & ZeiV - 1))
 With .Range("B2:smiley:" & ZeiV - 1).Font
 .Name = "Arial"
 .Size = 8
 .ColorIndex = 3
 End With
 .Range("A2:smiley:" & ZeiV - 1).Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlNo, \_
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
Application.ScreenUpdating = True
End Sub

Gruß
einhard

Hallo Reinhard,

wollte jetzt nur noch abschließend ein glückliches und zufriedenes „Danke!“ loswerden!

Herzliche Grüße, Katharina