Vielen Dank Uw und vielen Dank an alle, funktioniert super! Zwei Frage habe ich noch: - Jetzt werden alle Positionen kopiert. Wie ändere ich den Code wenn ich z.B nur Position 1,3 und 7 kopieren will und die restlichen nicht? Das ändert sich auch nicht mehr, d.h. es werden immer Positionen mit der Nummer 1,3 und 7 kopiert. - und wie ändere ich die Anfangszeile/Spalte für die Zeiltabelle , wenn z.B ab Spalte A, Zeile 3 eingefügt werden soll (bleibt bei allen Zieltabellen gleich)? Vielen Dank nochmals!
Sub Uebertragen() Dim i&, j&, k&, r&, lz&, tmp(), arrListe(): arrListe = Tabelle1.UsedRange.Value For i = 1 To 7 If i = 1 Or i = 3 Or i = 7 Then For j = 1 To UBound(arrListe) If arrListe(j, 1) = i Then r = r + 1 ReDim Preserve tmp(1 To UBound(arrListe, 2), 1 To r) For k = 1 To UBound(arrListe, 2) tmp(k, r) = arrListe(j, k) Next k End If Next j With Sheets(i + 1) .Range("A2:H" & .Cells(Rows.Count, 1).End(xlUp).Row).ClearContents lz = .Cells(Rows.Count, 1).End(xlUp).Row + 1 .Cells(lz, 1).Resize(UBound(tmp, 2), UBound(tmp, 1)) = Application.Transpose(tmp) End With r = 0 Erase tmp End If Next i End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:1 Nutzer sagt Danke an Egon12 für diesen Beitrag 28 • gaucho7
Hallo! Ich nochmal Zwei Kleinigkeiten habe ich noch: - Ich will ab Zeile 3 einfügen, weil in den Zeilen 1+2 Überschriften stehen. Das funktioniert auch so weit, nur werden bei jedem aktualisieren (Wenn in der Quelldatei etwas geändert wird) auch die Zeilen 1 und 2 gelöscht(geleert). Wie kann ich das verhindern? - Ich will aus der Quelldatei nur die Spalten A-G kopieren, im Moment sind es A-K. Wo kann ich das verändern?
Sub Uebertragen() Dim i&, j&, k&, r&, lz&, tmp(), arrListe(): arrListe = Tabelle1.UsedRange.Value arrListe = Application.Index(arrListe, Evaluate("row(1:" & UBound(arrListe, 1) & ")"), Array(1, 2, 3, 4, 5, 6, 7)) For i = 1 To 7 If i = 1 Or i = 3 Or i = 7 Then For j = 1 To UBound(arrListe) If arrListe(j, 1) = i Then r = r + 1 ReDim Preserve tmp(1 To UBound(arrListe, 2), 1 To r) For k = 1 To UBound(arrListe, 2) tmp(k, r) = arrListe(j, k) Next k End If Next j With Sheets(i + 1) lz = .Cells(Rows.Count, 1).End(xlUp).Row + 1 If lz < 3 Then lz = 3 .Range("A2:H" & lz).ClearContents lz = .Cells(Rows.Count, 1).End(xlUp).Row + 2 .Cells(lz, 1).Resize(UBound(tmp, 2), UBound(tmp, 1)) = Application.Transpose(tmp) End With r = 0 Erase tmp End If Next i End Sub
Die Übergabe der gewünschten Spalten kannst du in der Prozedur Zeile 3: Array(1, 2, 3, 4, 5, 6, 7) deinen Bedarf einstellen (1 bis 6 enspricht Spalte A bis G).
30.10.2024, 09:08 (Dieser Beitrag wurde zuletzt bearbeitet: 30.10.2024, 09:21 von gaucho7.)
Hi Uwe! Funktioniert leider noch nicht ganz. Ich habe in der Zieltabelle in den Zeilen 1 und 2 Überschriften. Die sind in allen Zieltabellen gleich und sollen auch immer bestehen bleiben. Die kopierten Inhalte sollen ab Zeile 3 eingefügt werden. Das Einfügen funktioniert richtig, es wird immer ab der 3.Zeile eingefügt, nur dass dabei die Zeile 2 mit Überschrift gelöscht wird. Habs hinbekommen
04.11.2024, 15:08 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2024, 15:11 von gaucho7.)
Hallo Uwe! Ich brauche dringend nochmal Deine Hilfe!
Ich habe meine Tabelle soweit ausgearbeitet, alles schien zu funktionieren. Jetzt kommt aber immer wieder Fehlermeldung "Laufzeitfehler 1004" Anwendungs-oder Objektdefinierter Fehler. Debugger springt immer in die gleiche Zeile des Scriptes. Gleicher Fehler kommt bei mehreren Modulen und immer in der gleichen Zeile. Fehler passiert, wenn ich in der Quelldatei "Materialprüfliste" versuche etwas einzugeben (nicht alle Felder). Im Anhang die Fehlermeldungen. Kannst Du Dir das nochmal anschauen? Vielen Dank!
Hallo, Ich vermute mal, dass arrListe leer ist. So wie du schreibst kann man vermuten, dass der Modulname des Tabellenblattes "Übersicht" nicht mehr Tabelle1 ist.