Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zeilen in variable Tabellenblätter kopieren
#1
Hallo Ihr Lieben,

habe eine Arbeitsmappe mit mehreren Tabellenblättern. Alle Blätter haben den gleichen Aufbau. (Es ist eine Artikelliste.)
Zeile 1 uns 2 ist der Tabellenkopf. Danach unterschiedliche Anzahl an befüllten Zeilen.
In Spalte G steht ein Datum.

Die Reiter sind benannt mit: 01.01.2016, 01.02.2016, 01.03.2016... usw. und ein Reiter heißt Sperrliste.

Wenn ich Spalte I in einer der Tabellen ein S bei einem Artikel eingetragen wird, wird über einen Button und Makro diese komplette Zeile mit dem Artikel in die Sperrliste verschoben.
Das habe ich schon hin bekommen und es klappt super.

Mein Problem ist nun folgendes. Wenn ich in der Sperrliste in der Spalte I bei einem Artikel das S wieder herausnehme, möchte ich durch betätigen
eines Buttons ein Makro auslösen, welches dann die Sperrliste Zeile für Zeile durchläuft und die Artikel, wo kein S mehr in Spalte I steht,
in die ursprünglichen Tabellen ans Ende zurück kopiert, d. h. wenn ich Spalte G ein Datum steht z.B. 15.03.2016 soll der Artikel in das Tabellenblatt
01.03.2016 zurück kopiert werden, der Artikel mit Datum 28.02.16 in das Blatt 01.02.2016 usw.

Irgendwie habe ich noch keinen Plan, wie ich das anstellen soll.

LG.

Peggy


Angehängte Dateien
.xlsm   offene Bestellungen neu4.xlsm (Größe: 376,16 KB / Downloads: 9)
Antworten Top
#2
Hallo!
Zitat:Das habe ich schon hin bekommen und es klappt super.
Der ganze Aufbau der Mappe erscheint mir fragwürdig.
Warum nicht alles in ein Blatt mit der "Sperrspalte"?
Dann ist es ein Klacks, die Sperrung wegzufiltern und/oder eine Datenüberprüfung laufen zu lassen.
Da die Datei bereits vorhanden ist, solltest Du diese auch hochladen.

Bevor Du meckerst: eine Datei kann man anonymisieren, wichtig ist der Aufbau.

Auswertungen großer Datenmengen sollte man dann per Pivot-Tabelle vornehmen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Ah, ich sehe gerade!
Unsere Peggymaus hat drei Themen erstellt und bereits drei Beiträge abgesendet Exclamation 
Habe mir den Verlauf mal angesehen.
Trotz teilweise arbeitsintensiver Antworten hält sie es nicht für notwendig, auch mal zu antworten.
Ich glaube, ich werde es ab sofort bei ihr auch so halten, sollte nicht zeitnah eine Antwort kommen.

Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Hallo Ralf.

Die Datei wurde hochgeladen. Der Aufbau wird leider genau so gewünscht. Was das Antworten angeht werde ich mich natürlich bessern.

LG.

Peggy
Antworten Top
#5
Hallo Ihr Lieben.


Habe mir überlegt, ob ich per VBA das Datum aus der Spalte G in der Sperrliste so auslesen kann, dass der Monat und das Jahr herauskommt. Dann mit der 01 davor verketten, dann hätte ich den richtigen Tabellennamen.

Aber wie ich diese Verkettung als variablen Bestandteil in mein Makro bekomme... keine Ahnung.

Hat irgend jemand vielleicht eine Idee dazu?

LG.

Peggy
Antworten Top
#6
Hallo noch mal,

habe gerade eine Möglichkeit gefunden, über folgende Formel:

=TEIL(ZELLE("Dateiname";$A$1);FINDEN("]";ZELLE("Dateiname";$A$1))+1;31)

und dann Umwandlung in einen festen Wert dem Artikel den Quelltabellennamen mit zu geben.

Aber wie kann ich diesen dann wieder einbauen zum Rückübertragen?

Den folgenden Code habe ich im Netz gefunden und denke dass dieser mein Ziel erfüllen kann.

Jedoch weiß ich nicht, wie ich den Tabellennamen dort einfügen kann.

Sub KopiereBereich()
Dim Quelltab As Worksheet
Dim Zieltab As Worksheet
Dim Zelle As Range
Dim Zaehler As Long
Zaehler = 1
Bereich = "A1:A10"
Set Quelltab = ActiveWorkbook.Worksheets("Tabelle1")
Set Zieltab = ActiveWorkbook.Worksheets("Tabelle2")
For Each Zelle In Quelltab.Range("A1:A10")
Zieltab.Cells(Zaehler, 1) = Zelle
Zaehler = Zaehler + 1
Next Zelle
End Sub

Hoffe es kann mir jemand helfen.

LG

Peggy
Antworten Top
#7
Hallo Peggy,

unten den Code anschauen und verstehen und bei Dir zu zurück kopieren verwenden:


Code:
 Dim i As Long
 Dim letzteZeile
 Dim strgTab As String
 
 For i = 2 To 100
   If Cells(i, 9) = "S" Then   'Spalte i nach "S" prüfen
     strgTab = DateSerial(Year(Cells(i, 7)), Month(Cells(i, 7)), 1) 'wenn ein "S" dann aus dem Datum der Spalte G der Zeile das entsprechende Blatt (Zieltabelle) ermitteln
     With Sheets(strgTab)
       letzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1   'erte freie Zeile in Spalte 1 der Zieltabelle ermitteln
       .Range(.Cells(letzteZeile, 1), .Cells(letzteZeile, 15)) = Range(Cells(i, 1), Cells(i, 15)).Value 'Den Inhalt des Bereichs A:O in den in den Bereich A:O der Zieltabelle schreiben
     End With
   End If
 Next i
Gruß Atilla
Antworten Top
#8
Dankschön. Probiere es gleich aus.

LG.

Peggy
Antworten Top
#9
So habe es getestet,

leider kommt die Meldung End ohne End if.
Wenn ich nach End with End if eingebe, kommt dann die Fehlermehlung For ohne Next.

LG.

Peggy
Antworten Top
#10
Hallo Attila,

habe next auch noch eingefügt und alles angepasst jetzt funktioniert es. Super. Genau so wollte ich es haben.

Wie kann ich folgende Zeilen umbauen, dass immer die ganzen Zeilen und nicht nur die Werte sondern auch Formatierungen und Co. mit kopiert werden?

Code:
For i = 3 To 100
  If Cells(i, 16) = "1" Then   'Spalte p nach "1" prüfen
    strgTab = DateSerial(Year(Cells(i, 7)), Month(Cells(i, 7)), 1) 'wenn ein "S" dann aus dem Datum der Spalte G der Zeile das entsprechende Blatt (Zieltabelle) ermitteln
    With Sheets(strgTab)
       letzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1   'erte freie Zeile in Spalte 1 der Zieltabelle ermitteln
      .Range(.Cells(letzteZeile, 1), .Cells(letzteZeile, 15)) = Range(Cells(i, 1), Cells(i, 15)).Value 'Den Inhalt des Bereichs A:O in den in den Bereich A:O der Zieltabelle schreiben
    End With
    End If
    Next

Danke schon mal für Deine Hilfe.

LG.

Peggy
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste