Microsoft Excel

Herbers Excel/VBA-Archiv

VBA - cell.copy

Betrifft: VBA - cell.copy von: Felix Scheben
Geschrieben am: 05.08.2014 10:04:01

Guten Tag zusammen,

ich stehe vor einem kleinen Problem hinsichtlich meines Codes.
Hintergrund ist, dass ich ein Tabellenblatt nach einem bestimmten Wort durchsuche und wenn dieses gefunden wird, die entsprechende Zeile in ein zweites Blatt kopiert werden soll. Das funktioniert soweit auch hervorragend. Siehe Code:

  • 
    Public Sub Daten_holen()
    Dim i As Integer
    Dim cell As Range
    i = 8
    For Each cell In Tabelle1.Range("I:I")
    If Not cell Is Nothing Then
        If cell.Value = "Suchwort" Then
            cell.EntireRow.Copy Destination:=Tabelle2.Rows(i)
            i = i + 1
        End If
    End If
    Next cell
    End Sub



  • Nun ist es so, dass nur in den ersten 10 Spalten Daten enthalten sind. In Spalte 11 des zweiten Blattes würde ich gerne eine Formel platzieren, die nicht jedes mal überschrieben wird, wenn ich das Makro ausführe. Es soll also nicht mehr die komplette Zeile kopiert und eingefügt werden, sondern lediglich die ersten 10 Spalten (A:J). Leider komme ich an dieser Stelle nicht weiter. Alle meine Versuche sind bislang gescheitert. Ich hoffe ihr könnt mich auf den richtigen Pfad bringen.

    Vielen vielen Dank im Voraus.

      

    Betrifft: AW: VBA - cell.copy von: hary
    Geschrieben am: 05.08.2014 10:21:25

    Moin Felix

    Range(cell.Row, 1, cell.Row, 10).Copy Tabelle2.Rows(i)

    gruss hary


      

    Betrifft: AW: VBA - cell.copy von: Robert
    Geschrieben am: 05.08.2014 10:23:18

    Hallo Felix,

    Probiere dieses:

    Option Explicit
    
    Public Sub Daten_holen()
    Dim i As Integer
    Dim cell As Range
    i = 8
    For Each cell In Tabelle1.Range("I:I")
    If Not cell Is Nothing Then
        If cell.Value = "Suchwort" Then
            Tabelle1.Range(Tabelle1.Cells(cell.Row, 1), Tabelle1.Cells(cell.Row, 10)).Copy  _
    Destination:=Tabelle2.Cells(i, 1)
            i = i + 1
        End If
    End If
    Next cell
    End Sub
    Viele Grüße
    Robert


      

    Betrifft: AW: VBA - cell.copy von: Daniel
    Geschrieben am: 05.08.2014 10:27:04

    Hi
    es gibt verschiedne Varianten wie man das realisieren kann.
    Ich bevorzuge diese, um nur die Spalten A-J zu kopieren:

    cell.Offset(0, 1 - cell.Column).Resize(, 10).copy Destination:=Tabelle2.Rows(i)
    btw, Zeilen einzeln per Schleife zu kopieren ist so ziemlich das langsamste was man tun kann.
    du könntest beispielsweise den Autofilter setzen und in Spalte I nach dem Suchwort filtern und dann alle Zeilen ausser der Zeile 1 kopieren und einfügen.
    In gefilteren Tabellen werden nur die sichtbaren Zeilen kopiert, beim Einfügen "rutschen" dann die Zeilen zusammen so dass anstelle der nicht kopierten Zeilen keine Leerzeilen entstehen.
    Noch schneller wirds, wenn du die Tabelle vorher nach Spalte I sortierst, so dass alle Zeilen, die kopiert werden müssen, direkt lückenlos untereinander stehen.

    Gruß Daniel