Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Letzte Zeile suchen und danach Werte einfügen

Forumthread: Letzte Zeile suchen und danach Werte einfügen

Letzte Zeile suchen und danach Werte einfügen
16.07.2013 09:21:39
Birgit
Hallo,
ich habe folgenden Code gebastelt, der auch grundsätzlich ganz gut funktioniert, das Problem ist nur dass beim Kopieren die gesamte Formel und nicht die Werte kopiert werden - könnt ihr mir vielleicht diesbezüglich weiterhelfen:
Sub VERSUCH()
Windows("LAGER Rohstoffe ab 01.01.2013 v2.xlsm").Activate
Dim wks1 As Worksheet, wks2 As Worksheet
Dim lastCell As Long, lastColumn As Integer
Set wks1 = Worksheets("ROHSTOFFE DETAILS ab 01.01.2013")
Set wks2 = Worksheets("Pivots")
With wks2
lastCell = .Range("C65536").End(xlUp).Row
lastColumn = .UsedRange.Columns.Count
.Range("A15:AS15").Copy Destination:=wks1.Range("C65536").End(xlUp).Offset(1, 0)
End With
Set wks1 = Nothing
Set wks2 = Nothing

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 09:32:52
Hajo_Zi
wks1.Range("C65536").End(xlUp).Offset(1, 0) = .Range("A15:AS15")

AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 11:08:44
Birgit
Danke für die Antwort!!!
ich habe es so angepasst:
.Range("A15:AS15").Copy Destination:=wks1.Range("C65536").End(xlUp).Offset(1, 0) = .Range("A15:AS15")
Jetzt kommt die Fehlermeldung Laufzeitfehler 13 - Typen unverträglich; habe ich etwas falsch angepasst?

Anzeige
AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 11:15:10
Hajo_Zi
mein Vorschlag gefiel Dir also nicht, welchen Grund das auch haben möchte. ZU Deinem Vorschlag musst Du den Fragen der Dir das vorgeschlagen hat.
Gruß Hajo

AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 11:18:51
Rudi
Hallo,
entweder
.Range("A15:AS15").Copy Destination:=wks1.Range("C65536").End(xlUp).Offset(1, 0)
oder
wks1.Range("C65536").End(xlUp).Offset(1, 0) = .Range("A15:AS15")
aber nicht beides verquirlen.
Gruß
Rudi

Anzeige
AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 11:21:25
Hajo_Zi
noch ein anderer Vorschlag.
.Range("A15:AS15").Copy
wks.Range("C65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Gruß Hajo

AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 11:35:22
Birgit
Super DANKE DANKE und nochmals DANKE - ihr seid die Besten!!

Anzeige
AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 12:22:40
Birgit
Jetzt muss ich doch nochmal etwas fragen - kann ich diese Befehl auch zweimal durchführen? Es kommt bei meiner Anpassung nämlich die Meldung: Mehrfachmeldung im Gültigkeitsbereich:
Sub Test
'Kopie Rohstoffe Details
Windows("LAGER Rohstoffe ab 01.01.2013 v2.xlsm").Activate
Dim wks1 As Worksheet, wks2 As Worksheet
Dim lastCell As Long, lastColumn As Integer
Set wks1 = Worksheets("ROHSTOFFE DETAILS ab 01.01.2013")
Set wks2 = Worksheets("Pivots")
With wks2
lastCell = .Range("C65536").End(xlUp).Row
lastColumn = .UsedRange.Columns.Count
.Range("A15:AS15").Copy
wks1.Range("C65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End With
Set wks1 = Nothing
Set wks2 = Nothing
'Kopie Rohstoffe
Windows("LAGER Rohstoffe ab 01.01.2013 v2.xlsm").Activate
Dim wks3 As Worksheet, wks4 As Worksheet
Dim lastCell As Long, lastColumn As Integer
Set wks3 = Worksheets("ROHSTOFFE ab 01.01.2013")
Set wks4 = Worksheets("Pivots")
With wks4
lastCell = .Range("C65536").End(xlUp).Row
lastColumn = .UsedRange.Columns.Count
.Range("A21:W21").Copy
wks3.Range("C65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub

Anzeige
AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 12:32:03
Rudi
Hallo,
du dimensionierst lastCell und lastColumn 2 mal. das darfst du nicht.
Gruß
Rudi

AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 12:39:05
Birgit
Gibt es da irgendeine Möglichkeit; dass in einen Marko zu erledigen? Da es täglich gebraucht wird; soll es benutzerfreundlich sein.

AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 12:55:34
Rudi
Hallo,
ich weiß zwar nicht, was das soll, aber trotzdem:
Sub Test()
'Kopie Rohstoffe Details
Dim wks1 As Worksheet, wks2 As Worksheet
Dim wks3 As Worksheet, wks4 As Worksheet
Dim lastCell As Long, lastColumn As Integer
With Workbooks("LAGER Rohstoffe ab 01.01.2013 v2.xlsm")
Set wks1 = .Worksheets("ROHSTOFFE DETAILS ab 01.01.2013")
Set wks2 = .Worksheets("Pivots")
End With
With wks2
lastCell = .Range("C65536").End(xlUp).Row
lastColumn = .UsedRange.Columns.Count
.Range("A15:AS15").Copy
End With
wks1.Range("C65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
'Kopie Rohstoffe
With Workbooks("LAGER Rohstoffe ab 01.01.2013 v2.xlsm")
Set wks1 = Worksheets("ROHSTOFFE ab 01.01.2013")
Set wks2 = Worksheets("Pivots")
End With
With wks2
lastCell = .Range("C65536").End(xlUp).Row
lastColumn = .UsedRange.Columns.Count
.Range("A21:W21").Copy
End With
wks1.Range("C65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub

Wozu definierst du Variable, wenn du sie nicht benutzt?
Gruß
Rudi

Anzeige
AW: Letzte Zeile suchen und danach Werte einfügen
16.07.2013 13:04:45
Birgit
Danke - hat funktioniert - der Hintergrund ist, dass ich zwei verschiedene Tabellenblätter mit Daten aus dem Tabellenblatt Pivot befülle

der Hintergrund ist...
16.07.2013 13:55:29
Rudi
Hallo,
was der Code macht, ist mir schon klar.
Mal auf das Nötige reduziert:
Sub Test()
Dim wks1 As Worksheet, wks2 As Worksheet, wksPivot As Worksheet
With Workbooks("LAGER Rohstoffe ab 01.01.2013 v2.xlsm")
Set wks1 = .Worksheets("ROHSTOFFE DETAILS ab 01.01.2013")
Set wks2 = .Worksheets("ROHSTOFFE ab 01.01.2013")
Set wksPivot = .Worksheets("Pivots")
End With
'Kopie Rohstoffe Details
wksPivot.Range("A15:AS15").Copy
wks1.Range("C65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
'Kopie Rohstoffe
wksPivot.Range("A21:W21").Copy
wks2.Range("C65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
^
Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Letzte Zeile in Excel VBA ermitteln und Werte einfügen


Schritt-für-Schritt-Anleitung

  1. Arbeitsmappen aktivieren: Aktiviere die Arbeitsmappe, in der Du arbeiten möchtest.

    Windows("LAGER Rohstoffe ab 01.01.2013 v2.xlsm").Activate
  2. Worksheet-Objekte setzen: Setze die entsprechenden Worksheet-Objekte.

    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("ROHSTOFFE DETAILS ab 01.01.2013")
    Set wks2 = Worksheets("Pivots")
  3. Letzte Zeile ermitteln: Bestimme die letzte Zeile in der Ziel-Tabelle.

    Dim lastCell As Long
    lastCell = wks2.Range("C65536").End(xlUp).Row
  4. Werte kopieren: Verwende die PasteSpecial-Methode, um nur die Werte zu kopieren und nicht die Formeln.

    wks2.Range("A15:AS15").Copy
    wks1.Range("C" & lastCell + 1).PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False

Häufige Fehler und Lösungen

  • Laufzeitfehler 13 - Typen unverträglich: Dieser Fehler tritt auf, wenn Du versuchst, etwas zuzuweisen, das nicht kompatibel ist. Achte darauf, dass Du nicht versuchst, eine Zelle mit einer Range zu überschreiben.

  • Doppelte Dimensionierung von Variablen: Wenn Du lastCell und lastColumn mehrfach in einem Sub definierst, erhältst Du einen Fehler. Dimensioniere sie nur einmal.


Alternative Methoden

Eine alternative Methode zur Ermittlung der letzten Zeile könnte die Verwendung von UsedRange sein:

lastCell = wks2.UsedRange.Rows.Count

Das gibt Dir die Anzahl der genutzten Zeilen zurück, was in manchen Fällen einfacher sein kann.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, um Daten aus einem Pivot-Tabellenblatt in zwei verschiedene Tabellenblätter zu kopieren:

Sub Test()
    Dim wks1 As Worksheet, wks2 As Worksheet, wksPivot As Worksheet
    With Workbooks("LAGER Rohstoffe ab 01.01.2013 v2.xlsm")
        Set wks1 = .Worksheets("ROHSTOFFE DETAILS ab 01.01.2013")
        Set wks2 = .Worksheets("ROHSTOFFE ab 01.01.2013")
        Set wksPivot = .Worksheets("Pivots")
    End With

    'Kopie Rohstoffe Details
    wksPivot.Range("A15:AS15").Copy
    wks1.Range("C" & wks1.Cells(Rows.Count, 3).End(xlUp).Row + 1).PasteSpecial Paste:=xlValues

    'Kopie Rohstoffe
    wksPivot.Range("A21:W21").Copy
    wks2.Range("C" & wks2.Cells(Rows.Count, 3).End(xlUp).Row + 1).PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False
End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False: Deaktiviere die Bildschirmaktualisierung während des laufenden Codes, um die Ausführungsgeschwindigkeit zu erhöhen.

  • Fehlerbehandlung einbauen: Nutze On Error Resume Next und On Error GoTo 0, um mögliche Laufzeitfehler zu steuern und zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich die Methode in anderen Excel-Versionen verwenden? Ja, die Methode funktioniert in den meisten Versionen von Excel, die VBA unterstützen.

2. Wie kann ich die letzte Zeile in einer bestimmten Spalte ermitteln? Du kannst die letzte Zeile in einer bestimmten Spalte wie folgt ermitteln:

lastCell = wks2.Cells(wks2.Rows.Count, "C").End(xlUp).Row

3. Was ist der Unterschied zwischen Copy und PasteSpecial? Copy kopiert sowohl den Wert als auch die Formatierung, während PasteSpecial Dir erlaubt, nur die Werte, Formate oder andere Eigenschaften zu wählen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige