Werte in Spalte suchen und Zeilen in anderes Blatt kopieren
#11
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!
Antworten Top
#12
Hallo,

das wäre dann so:
Code:
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:
  • gaucho7
Antworten Top
#13
Danke Uwe!
Aber es wird immer noch in die 2.Zeile reingeschrieben, anstatt in die.3.
Antworten Top
#14
Hallo,

ändere diese Zeile so:
Code:
lz = .Cells(Rows.Count, 1).End(xlUp).Row + 2
Gruß Uwe
Antworten Top
#15
Vielen Dank, funktioniert!
Antworten Top
#16
Hallo! Ich nochmal Blush 
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?

Danke für die Hilfe!
Antworten Top
#17
Hallo,

nach deiner PN wäre es so:
Code:
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).

Gruß Uwe
Antworten Top
#18
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  79 

Vielen Dank Uwe!
Antworten Top
#19
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!


Angehängte Dateien Thumbnail(s)
       
Antworten Top
#20
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.
 
Gruß Uwe
Antworten Top


Gehe zu:


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