Office: (Office 2016) Kopieren und Einfügen, schaffe es nicht

Helfe beim Thema Kopieren und Einfügen, schaffe es nicht in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo liebe Profis, habe ein fuer mich grosses Problem, ich schaffe es nicht, einen Zellinhalt aus einer Tabelle in eine andere Tabelle zu kopieren.... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Chang, 8. Oktober 2020.

  1. Chang Neuer User

    Kopieren und Einfügen, schaffe es nicht


    Hallo liebe Profis,
    habe ein fuer mich grosses Problem, ich schaffe es nicht, einen Zellinhalt aus einer Tabelle in eine andere Tabelle zu kopieren. Die Besonderheit ist, dass die Namen der Tabellenblaetter in einer anderen Tabelle(Daten) zusammmengefasst unter B7 stehen. Jetzt soll z.B. aus Tabelle(Name1) die Zelle N5 kopiert werden. Das habe ich geschafft. Habe es geprueft ueber msgbox, blattname und xa werden korrekt angezeigt
    Jetzt soll dieser Zellwert in die Tabelle(Daten) kopiert werden, in der alle Tabellen(Name1, Name2, usw) untereinander ab B7 stehen. Und zwar die Zelle N5 aus
    Tabelle(Name1) in die Tabelle(Daten) und zwar in die Zeile, wo Name1 vorkommt. Habe ich micht verstaendlich ausgedruekt ? Klar eine Beispieletabelle waere besser, kommt dann noch

    Dim i As Integer
    Dim xa As Variant

    blattname = TextBox1.Value

    xa = Worksheets(blattname).Range("N5").Value


    With Sheets("Daten")


    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
    If .Range("B7" & i) Like blattname Then .Range("H7" & i) = xa
    Next i


    End With
    End Sub

    Sage schon mal Danke

    Gruss Boris
     
  2. Exl121150 Erfahrener User
    Hallo Boris,

    der Range-Ausdruck .Range("B7" & i) in Verbindung mit With Sheets("Daten") und For i = 1 To ... bedeutet doch, dass du auf folgende Zellen zugreifst:
    Daten!B71, Daten!B72, Daten!B73, usw.
    Analoges gilt auch für .Range("H7" & i):
    Daten!H71, Daten!H72, Daten!H73, usw.

    Da du aber auf Zeilen bzw. Zellen, die unterhalb von Daten!B7 stehen, zugreifen willst, müsste der einschlägige Range-Ausdruck lauten:
    .Range("B" & (i+7))
    bzw.
    .Range("H" & (i+7))

    Du könntest alternativ auch folgende Formeln einsetzen:
    .Cells(i+7, "B") oder auch .Cells(i+7, 2)
    bzw.
    .Cells(i+7, "H") oder auch .Cells(i+7, 8)
     
    Zuletzt bearbeitet: 9. Oktober 2020
    Exl121150, 9. Oktober 2020
    #2
  3. Chang Neuer User
    Danke für die schnelle Antwort Anton, werde mich am WE jetzt mal hinsetzen und es ausprobieren. Melde mich nochmals! Gruss

    Habe es nicht ausgehalten, musste es gleich probieren! Und Super, es klappt! Bist halt ein Profi :-) Hast mir das WE gerettet!

    Vielen Dank!
     
    Zuletzt bearbeitet: 9. Oktober 2020
  4. Chang Neuer User

    Kopieren und Einfügen, schaffe es nicht

    Hallo, bin erst heute dazu gekommen, mich damit wieder zu beschäftigen. Es ist mir etwas aufgefallen, es wird in das Blatt Daten (bei gleichem Blattnamen) nur in der ersten Zeile etwas eingetragen, weiter Einträge werden ignoriert.
    Dim i As Integer

    blattname = TextBox1.Value

    With Sheets("Daten")

    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
    If .Range("B" & (i + 6)) Like blattname Then .Range("H" & (i + 6)) = Worksheets(blattname).Range("M3").Value
    Next i

    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
    If .Range("B" & (i + 6)) Like blattname Then .Range("I" & (i + 6)) = Worksheets(blattname).Range("M4").Value
    Next i

    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
    If .Range("B" & (i + 6)) Like blattname Then .Range("J" & (i + 6)) = Worksheets(blattname).Range("N3").Value
    Next i

    End With

    Wenn also Einträge aus einem anderen Blatt dazukommen und die dann ja darunter stehen, dies funktioniert nicht?
    ich denke, dass es mit der Zählvariable zu tun haben könnte, habe das auf i+6 geändert, dann wird die erste Zeile, wenn gefunden gefüllt, bei i+7 die zweite.

    Kannst Du dir das nochmal anschauen? Danke
     
    Zuletzt bearbeitet: 16. Oktober 2020
  5. Exl121150 Erfahrener User
    Hallo,

    ich verstehe leider überhaupt nicht, was du möchtest, weil alles widersprüchlich ist: sowohl das Makro als auch der darunter angefügte Text.
    Ich beschreibe daher im Folgenden, was dein Makro macht:
    1. blattname = TextBox1.Value
      Der Inhalt der "TextBox1" wird in der Variable "blattname" gespeichert. Das soll offenbar der Name eines Arbeitsblattes sein, von dem Daten holst und im Arbeitsblatt "Daten" speichern willst.
    2. With Sheets("Daten"): WithBlock: End With
      Alle Funktionen, die im "WithBlock" enthalten sind und mit einem "." beginnen, sollen sich auf das Arbeitsblatt "Daten" beziehen.
    3. For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row: ForBlock: Next i
      Der Ausdruck ".Cells(.Rows.Count, 1).End(xlUp).Row" schaut in Spalte A des Arbeitsblattes "Daten" nach, in welcher Zeile sich der letzte Dateneintrag befindet. D.h. befindet sich in Spalte A in Zelle Daten!A14 der letzte Dateneintrag (also in den Zellen darunter in A15, A16, A17, ..., A1048576 keine Daten), dann ergibt dieser Ausdruck den Wert 14, weil Zelle A14 die letzte Zelle der A-Spalte ist mit Daten.
      Somit durchläuft die Variable "i" die Ganzzahlwerte von 1 bis 14 (wenn ich vorgenanntes Beispiel hernehme) und jeder dieser Werte wird auf den ForBlock angewendet.
    4. If .Range("B" & (i + 6)) Like BlattName Then .Range("H" & (i + 6)) = Worksheets(BlattName).Range("M3").Value
      Wenn ich das Beispiel von vorhin mit letzte Datenzelle in A14 anwende, so wird der ForBlock 14 mal durchlaufen mit "i"-Werten von 1 bis 14:
      If .Range("B7") Like BlattName Then .Range("H7") = Worksheets(BlattName).Range("M3").Value 'weil i=1 --> i+6 = 7
      If .Range("B8") Like BlattName Then .Range("H8") = Worksheets(BlattName).Range("M3").Value
      If .Range("B9") Like BlattName Then .Range("H9") = Worksheets(BlattName).Range("M3").Value
      ...
      If .Range("B18") Like BlattName Then .Range("H18") = Worksheets(BlattName).Range("M3").Value
      If .Range("B19") Like BlattName Then .Range("H19") = Worksheets(BlattName).Range("M3").Value
      If .Range("B20") Like BlattName Then .Range("H20") = Worksheets(BlattName).Range("M3").Value
      'weil i=14 --> i+6 = 20
    5. For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
      If .Range("B" & (i + 6)) Like BlattName Then .Range("I" & (i + 6)) = Worksheets(BlattName).Range("M4").Value
      Next i

      Da sich in der Spalte A nichts geändert hat, ist die Zelle A14 immer noch die letzte Zelle dieser Spalte mit Daten, daher ergibt der Ausdruck
      .Cells(.Rows.Count, 1).End(xlUp).Row immer noch 14 und somit läuft die Variable "i" immer noch von 1 bis 14 und es werden folgende 14 Befehlszeilen ausgefüht:
      If .Range("B7") Like BlattName Then .Range("I7") = Worksheets(BlattName).Range("M4").Value 'weil i=1 --> i+6 = 7
      If .Range("B8") Like BlattName Then .Range("I8") = Worksheets(BlattName).Range("M4").Value
      If .Range("B9") Like BlattName Then .Range("I9") = Worksheets(BlattName).Range("M4").Value
      ...
      If .Range("B18") Like BlattName Then .Range("I18") = Worksheets(BlattName).Range("M4").Value
      If .Range("B19") Like BlattName Then .Range("I19") = Worksheets(BlattName).Range("M4").Value
      If .Range("B20") Like BlattName Then .Range("I20") = Worksheets(BlattName).Range("M4").Value
      'weil i=14 --> i+6 = 20
    6. For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
      If .Range("B" & (i + 6)) Like BlattName Then .Range("J" & (i + 6)) = Worksheets(BlattName).Range("N3").Value
      Next i

      Da sich in der Spalte A nichts geändert hat, ist die Zelle A14 immer noch die letzte Zelle dieser Spalte mit Daten, daher ergibt der Ausdruck
      .Cells(.Rows.Count, 1).End(xlUp).Row immer noch 14 und somit läuft die Variable "i" immer noch von 1 bis 14 und es werden folgende 14 Befehlszeilen ausgefüht:
      If .Range("B7") Like BlattName Then .Range("J7") = Worksheets(BlattName).Range("N3").Value 'weil i=1 --> i+6 = 7
      If .Range("B8") Like BlattName Then .Range("J8") = Worksheets(BlattName).Range("N3").Value
      If .Range("B9") Like BlattName Then .Range("J9") = Worksheets(BlattName).Range("N3").Value
      ...
      If .Range("B18") Like BlattName Then .Range("J18") = Worksheets(BlattName).Range("N3").Value
      If .Range("B19") Like BlattName Then .Range("J19") = Worksheets(BlattName).Range("N3").Value
      If .Range("B20") Like BlattName Then .Range("J20") = Worksheets(BlattName).Range("N3").Value
      'weil i=14 --> i+6 = 20
    Ich muss nur wissen, wo du welche Zellbereiche mit deinen 3 For-Schleifen bespeichern willst.
    Am besten ist eine (anonymisierte) Musterdatei, an der ich sehen kann, wo du was hin haben willst.

    Oder besteht das Problem darin, dass du mit dem Ausdruck .Cells(.Rows.Count, 1).End(xlUp).Row die falsche Spalte abfragst. Wenn nämlich in Spalte A nur in Zelle Daten!A1 Daten enthalten sind, so ergibt der Ausdruck .Cells(.Rows.Count, 1).End(xlUp).Row den Wert 1 und die Variable "i" läuft in "For i = 1 to 1" und es wird nur je ein Befehl pro ForBlock ausgeführt.
    Wenn du nämlich in Wahrheit diesen Zeilenabfrageausdruck auf Spalte B anwenden möchtest, müsstest du die 1 durch eine 2 ersetzen, also:
    .Cells(.Rows.Count, 2).End(xlUp).Row
     
    Zuletzt bearbeitet: 16. Oktober 2020
    Exl121150, 16. Oktober 2020
    #5
  6. Chang Neuer User
    Hallo Anton,
    Danke, dass Du dir soviel Mühe gibst mir zu helfen! ich habe etwas zustammengestellt, was eigentlich dem Sinn entspricht. Der Wert aus Blattname kommt jetzt zwar nicht aus der userform, sondern aus der Tabelle(Test, A1), die Fehler sind aber wie im Original die gleichen. Ich habe z.B. unter Daten die Reihenfolge geändert,weggelassen usw. Diie zu kopierenden Daten kommen alle aus AB-LC 4,...6,...1 und zwar aus M3,M4,N3. Im Original können Blätter hinzukommen oder entfernt werden
     
    Zuletzt von einem Moderator bearbeitet: 30. November 2020
  7. Exl121150 Erfahrener User
    Hallo,

    ich habe dir in der beiliegenden Excel-Datei im Arbeitsblatt "Test" einen zweiten Button "Blätter D-Spalte übertragen" eingefügt.
    Klickst du auf diesen, werden die Daten der Arbeitsblätter, die in der Spalte D ab Zelle D1 enthalten sind, ins Blatt "Daten" zeilenweise übertragen.
    Dabei werden die übertragenen Zeilen an bestehende Datenzeilen angefügt.
     
    Exl121150, 17. Oktober 2020
    #7
  8. Chang Neuer User

    Kopieren und Einfügen, schaffe es nicht

    Wow, da hast Du ja etwas auf die Beine gestellt, wäre für mich undenkbar! Morgen probiere ich es aus! Weiß gar nicht, wie ich mich mal revanchieren könnte! (Vielleicht hast Du ja mal etwas im Rhein-Neckar Raum mit dem LKW zu fahren :-) )
    Gruß und Danke
     
  9. Exl121150 Erfahrener User
    Hallo,

    ich habe das Makro aus Posting #7 etwas verbessert, etwas schneller gemacht und mit Kommentar versehen.
    Ich bin leider in der Nähe von Linz an der Donau (in Österreich) zu Hause.
     
    Exl121150, 17. Oktober 2020
    #9
Thema:

Kopieren und Einfügen, schaffe es nicht

Die Seite wird geladen...
  1. Kopieren und Einfügen, schaffe es nicht - Similar Threads - Kopieren Einfügen schaffe

  2. Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.)

    in Microsoft Excel Hilfe
    Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.): Hallo, ich benötige Hilfe für ein Problem, welches ich leider selbst schwerlich als Anfänger nicht lösen kann: Ich möchte von dem Tabellenblatt "Tabelle1" aus den Zellen B8:B14, K8:K14, B18:B25,...
  3. Excel Tabelle mit Formel in Word Einfügen

    in Microsoft Excel Hilfe
    Excel Tabelle mit Formel in Word Einfügen: Hallo, Ich versuche derzeit eine Excel Tabelle mit mehreren Formeln in mein Word Dokument einzubinden. Dafür würde ich gerne die Einfügeoption "Verknüpfung und ursprüngliche Formatierung...
  4. Werte aus mehreren Spalten kopieren und darunter einfügen

    in Microsoft Excel Hilfe
    Werte aus mehreren Spalten kopieren und darunter einfügen: Hallo zusammen, leider konnte ich im Internet und auch in diesem Forum keine passende Antwort finden. Ich habe eine .csv Datei, bei der ich mehrere Spalten habe. Es handelt sich hierbei um...
  5. Wert in Zelle kopieren und in nächster freie Zelle einfügen

    in Microsoft Excel Hilfe
    Wert in Zelle kopieren und in nächster freie Zelle einfügen: Hallo zusammen, ich habe jetzt schon etwas länger recherchiert, habe aber vermutlich nen dickes Brett vorm Kopf ;-) Mein Problem möchte ich gerne im VBA als Makro erledigen. In der Zelle F4 ist...
  6. Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen

    in Microsoft Excel Hilfe
    Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen: Hallo Zusammen, mein erster Beitrag hier, also schon mal Sorry im Voraus, wenn unvollständig beschrieben *:)* Ich habe das Forum schon nach einem brauchbaren Lösungsansatz durchsucht, bin aber...
  7. Bereich kopieren und einfügen

    in Microsoft Excel Hilfe
    Bereich kopieren und einfügen: Hallo zusammen, Ich würde gerne, nachdem ich eine Pos. eingetragen habe (tabelle1) zeile 15 bis 46 mittels VPA den Bereich kopieren und in ein neues Blatt kopieren , danach löschen und dasselbe...
  8. VBA Makro, einzelne Zellen kopieren und in fortlaufende Zeile einfügen

    in Microsoft Excel Hilfe
    VBA Makro, einzelne Zellen kopieren und in fortlaufende Zeile einfügen: Hallo zusammen Verstehe die Makro Codes nicht gut, jedoch halfen bereits youtube Tutorials bei ein paar Problemen. Nun bräuchte ich aber eure Hilfe. Es geht um folgendes: Ich möchte ein Makro in...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden