Clever-Excel-Forum

Normale Version: Kopieren mit Sheetnamen aus Zelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi Ihr Lieben,
ich brauch schon wieder eure Hilfe!
Mein Ziel ist es, ein Makro zu Schreiben wo ich Daten in ein Arbeitsblatt kopieren kann, der Name für das Tabellenblatt kommt aus einer Zelle als Dropdown ausgewählt.
Noch dazu sollen die kopierenden Daten untereinander geschrieben werden ohne das Vorherige zu Überschreiben

Kerndaten :

Quell Blatt : Name ( Preis_Akquise) die zu kopierende (Zelle L35)
Ziel Daten: Blatt-quelle ( Preis_Akquise) Zelle für den Tabellen namen wohin kopiert werden sollen ist (Zelle P35)
Die ersten Einträge sollen immer im besagten variablen Blatt ab Zelle B11 eingetragen und Unter einander geschrieben werden.
Ich weiß noch nicht so recht wie ich das Realisieren kann und bin für jede Hilfe Dankbar.


Viele Grüße
Hallo,
so wird es wohl nichts.
Stelle doch eine Beispieldatei mit dem gewünschten Ergebnis ins Forum, dann weiß man, was Du wirklich willst....
Hi Vielen Dank für deine Schnelle Reaktion ich habe eine Beispiel Datei zusammen gezimmert.
Die jetzt von Spalten/ Zeilen oder Tabellen namen nicht wie die Originale ist.. aber anpassen kann ich ja denke ich selber hoffe ich
Hallo,

wenn ich Dich richtig verstanden habe, dann so:

Code:
Sub kopieren()
   Dim lngZ As Long
   
   With Sheets(Sheets("Preis_Akquise").Range("P35").Value)
     lngZ = Application.Max(11, .Cells(.Rows.Count, 2).End(xlUp).Row)
     .Cells(lngZ, 2).Value = Sheets("Preis_Akquise").Range("L35").Value
   End With

End Sub
Schönen Guten Abend Atilla,

der Code Sieht gut aus es kommt auch keine Fehlermeldung... aber er kopiert nichts.
Kann es sein : Der zu kopierende Wert ist ein Text und wird nicht händisch geschrieben sondern von einen VBA code dort in die Zelle Verlinkt...  und soll von dort aus also L35 in das variable Registerblatt kopiert werden ,macht das einen Unterschied ?
Hallo,

ich beschreibe mal was der Code macht.
In der Zelle P35 der Tabelle  "Preis_Akquise" steht ein Tabellenname.
In der Zelle L35 der Tabelle  "Preis_Akquise" steht ein Wert.

Dieser Wert wird in die Tabelle aus der Zelle P35 geschrieben. Und zwar ab Zelle B11 der Tabelle, die in Zelle P35 der Tabelle "Preis_Akquise" benannt ist.

Noch einmal kurz: Wert aus L35 der Tabelle  "Preis_Akquise" ab Zelle B11 der Tabelle, welche in Zelle P35 der Tabelle  "Preis_Akquise" steht.
Klingt nach dem was es tun soll... im Anhang ist die komplette Datei... vielleicht geht es ja so besser
Hallo,

schau mal weiter unten, unter die zweite Tabelle in der Tabelle in die geschriene werden soll.
Dort findest Du den Wert aus Zelle L35.
Ich ermittle die erste frei Zeile von der letzten frei Zeile in der Spalte nach oben.
Heißt ich suche von unten nach oben solange bis ich auf eine nicht frei Zeile treffe.
Intelligente Tabellen müssen da besonders behandelt werden.

Du hast zwei Tabellen untereinander, Du müsstest genau definieren in Welche geschrieben werden soll und was passieren soll, wenn die letzte Zeile belegt ist.
öhm oh Okay stimmt unten steht es drin ,naja er soll oben anfangen vom ersten Blatt und wenn Blatt 1 voll soll er dann automatisch auf dem zweiten Blatt weiter machen..... wie mach ich das ?
Hallo,

ich stelle mal unten ein Vorschlag ein:

Code:
Sub kopieren()
   Dim lngZ As Long
   Dim Tbl1 As ListObject, Tbl2 As ListObject
   Set Tbl1 = ThisWorkbook.Sheets(Sheets("Preis_Akquise").Range("P35").Value).ListObjects("Tabelle1137")
   Set Tbl2 = ThisWorkbook.Sheets(Sheets("Preis_Akquise").Range("P35").Value).ListObjects("Tabelle19138")

   lngZ = Application.CountA(Tbl1.ListColumns(2).Range) + 10
   If lngZ < 50 Then
     Sheets(Sheets("Preis_Akquise").Range("P35").Value).Cells(lngZ, 2).Value = Sheets("Preis_Akquise").Range("L35").Value
   Else
      lngZ = Application.CountA(Tbl2.ListColumns(2).Range) + 59
      If lngZ < 99 Then
         Sheets(Sheets("Preis_Akquise").Range("P35").Value).Cells(lngZ, 2).Value = Sheets("Preis_Akquise").Range("L35").Value
      Else
         MsgBox "Beide Tabellen gefüllt. Keine Übertragung mehr möglich."
      End If
   End If
   
End Sub


Das Ganze ist aber sehr statisch.  Die Tabellen müssen unbedingt so heißen, wie im Code. Sie müssen unbedingt die Bereiche belegen, wie in der Beispielmappe.
Es dürfen keine Zeilen hinzu kommen oder gelöscht werden.
Alles andere ist sehr aufwendig.

Ich habe das eingestellt, nicht um Dein Problem zu lösen - denn ich bin mir sicher, dass da noch mehr kommen wird- sondern, damit Du etwas zum rumbasteln hast.
Vielleicht hilft es Dir sogar alles mal genauer zu überdenken. Du wirst mit der Datei nicht weiter kommen. Das Arbeiten darin wird fast nicht möglich werden.
Zu viel von allem. Zu viele Formeln, zu viele Formate zu viele Tabellen ohne Struktur, zu viel Code, welche im Hintergrund bei jeder Eingabe abläuft.

Ich will Dich nicht belehren, aber mach Dir mal Gedanken, ob Du den richtigen Weg gehst.
Seiten: 1 2