Clever-Excel-Forum

Normale Version: VBA nur Werte in zweites Tabellenblatt übertragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo im Forum,

habe eine Beispieltabelle beigefügt mit einem VBA Code, den ich nicht zum Laufen bekomme. Habe schon stundenlang überall versucht Lösungen zu finden. - Klappt einfach nicht.
Es sollen einfach nur Werte aus der Tabelle1 (ohne Formeln) ab einer bestimmten Stelle in die Tabelle2 übertragen werden. Dort soll die Formatierung nicht verändert werden.
Genaueres ist in der Beispieltabelle beschrieben. - Vielleicht habt Ihr ja eine gute Idee dazu. Der Code soll möglichst schlank sein und wenig Speicher benötigen, da es um die 600 Zeilen sind, die in der Originaltabelle zu durchsuchen sind.

Danke Euch schon einmal im Voraus

Grüße
NobX
Hallo,
Sub aaa()
Dim i As Long, j As Long, k As Long
Dim varQ As Variant, varZ As Variant
varQ = Tabelle1.Range("A1").CurrentRegion.Value
ReDim varZ(1 To UBound(varQ, 1), 1 To UBound(varQ, 2))
For i = 1 To UBound(varQ)
If varQ(i, 8) <> 0 Then
k = k + 1
For j = 1 To UBound(varQ, 2)
varZ(k, j) = varQ(i, j)
Next j
End If
Next i
Tabelle2.Range("B6").Resize(UBound(varZ, 1), UBound(varZ, 2)).Value = varZ
End Sub
Gruß Uwe
Hallo NobX,

da geht bei Dir einiges durcheinander...

Anbei der korrigierte Code:
Code:
Sub TestKopierenEinfügen()
    Dim wks1 As Worksheet, wks2 As Worksheet, Zeile As Integer, j As Long
   
    Set wks1 = Sheets("Tabelle1")
    Set wks2 = Sheets("Tabelle2")
 
    Application.ScreenUpdating = False
     
    With wks1
           j = 6
           For Zeile = 1 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row

            If .Cells(Zeile, 8) <> 0 Then
                .Rows(Zeile).Copy
                wks2.Cells(j, "A").PasteSpecial Paste:=xlPasteValues
                j = j + 1
            End If
        Next Zeile
        End With
        Application.CutCopyMode = False
    Application.ScreenUpdating = True
  End Sub

Gruß,
Lutz
Hallo Lutz,

und sonst ist soweit alles OK bei Dir? Blush

Gruß Uwe
Warum?
Hallo Uwe, hallo Lutz,

vielen Dank für Eure Arbeit.
Der Code von Uwe funktioniert genau so, wie ich es wollte, beim Code von Lutz funktioniert es auch besser als bei mir zuvor. Ich bekomme jedoch die Werte in Tabelle 2 nicht ab "B6" eingefügt, sondern beginnend ab "A6". Wenn ich jedoch das "A" im Code auf "B" verändere, kommt wieder ein Fehler. Warum ist das so?

Grüße und nochmals herzlichen Dank.

NobX
Hallo NobX,

weil die ganze Zeile kopiert wird und dann auch wieder in eine ganze Zeile eingefügt werden muss (sonst würde ja am Ende ne Zelle rausfallen).
Bei Bedarf könnte man natürlich den Bereich auf eine Anzahl an Spalten eingrenzen.

Wenn dir Uwe's Version taugt, nimmst Du einfach die.
Ist auch die schnellere von beiden  Blush.

Gruß,
Lutz
Hallo Lutz,

(08.12.2020, 10:28)Lutz Fricke schrieb: [ -> ]Warum?

alles gut. :100:
Ich hatte das vorhandene Makro in der Tabelle1 gar nicht wahrgenommen. Blush

Gruß Uwe
Hallo Lutz, hallo Uwe,

vielen Dank noch einmal. Passt so.

Grüße

NobX