7.8k Aufrufe
Gefragt in Tabellenkalkulation von vbalehrling Einsteiger_in (37 Punkte)
Hallo ihr helfenden !

Ich habe ein Problem mit Leerzellen. Ich habe einen Code, der im Range alle Werte einer Zelle kopiert (Arbeitsblatt1) und diese in Arbeitsblatt2 ab der letzten freien Zeile einfügt. In Arbeitsblatt 1 gibt es aber Formeln, die nicht kopiert werden sollen. Dank dieses Forums hat man meinen Code richtig umgeschrieben.
Jetzt aber zu dem Problem.
Im Range (10 Zeilen) werden nicht immer alle gebraucht. Diese bleiben quasi leer.

Wie muss der Code aussehen, damit dieser die leeren Zeilen/ Zellen nicht mitkopiert ???

Denn im Arbeitsblatt2 merkt sich Excel trotz des Codes, dass in bestimmten Zellen Formeln standen.
Damit entsteht folgender Fehler:
Beim nächsten Kopiervorgang via VBA fügt Excel den zu kopierenden Zellinhalt nicht in die nächste freie Zeile, sondern irgendwie merkt sich Excel,dass dort mal Formeln standen und lässt leere Zellen einfach frei.

Mein Code:

Private Sub CommandButton1_Click()
Dim lRow As Long
With Worksheets("Wareneingang")
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A10:O19").Copy
.Cells(lRow, 1).PasteSpecial Paste:=xlValues
End With
Application.CutCopyMode = False

Dim strText As String
strText = " Daten kopiert"
MsgBox strText
End Sub

15 Antworten

0 Punkte
Beantwortet von vbalehrling Einsteiger_in (37 Punkte)
Hallo Oliver,

ein dankeschön schonmal im Voraus!

Nicht nur in Spalte A10:A19, sondern auch in Spalte K10:O19.

Bis dahin

MfG
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo,

hat mir keine Ruhe gelassen. Mit dem nachfolgenden Code sollte es nun aber gehen.

Private Sub CommandButton1_Click()
Dim lRow As Long
Dim intRow As Integer
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With

On Error GoTo ERRORHANDLER

With Worksheets("Wareneingang")
For intRow = 10 To 19
If WorksheetFunction.CountBlank(Rows(intRow)) < 256 Then
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & intRow & ":O" & intRow).Copy
.Cells(lRow, 1).PasteSpecial Paste:=xlValues
End If
Next
End With
Application.CutCopyMode = False

MsgBox " Daten kopiert"
ERRORHANDLER:
With Application
.ScreenUpdating = False
.Calculation = xlCalculationAutomatic
End With
End Sub
Das Problem waren doch nicht die Formeln, sondern dass ich nicht wußte, welche Excelversion Du verwendest und da habe ich das für Excel2000-2003 und ab Excel2007 erstellt. Das Problem war die Zeile für Excel2007. Nun sollte es aber bei Dir funktionieren.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von vbalehrling Einsteiger_in (37 Punkte)
Hallo Oliver,

was soll ich sagen ?

Geil ! Klappt wie am Schnürchen.
Herzlichen Dank !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


MfG
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo ,

gerne geschehen. Danke auch für die Rückmeldung.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

hier noch ein allgemeines beispiel

gruss nighty

Option Explicit
Sub FilterKopieren()
Worksheets("ANZUPASSEN").Range(BEREICHS_ANGABE).AutoFilter Field:=1, Criteria1:="<> "
Worksheets("ANZUPASSEN").Rows("2:" & Worksheets("ANZUPASSEN").UsedRange.SpecialCells(xlCellTypeLastCell).Row).Copy _
Worksheets("ANZUPASSEN").Range("A" & Worksheets("ANZUPASSEN").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
Worksheets("ANZUPASSEN").Range("A1").AutoFilter
End Sub
...