Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA Werte in Spalte bis zur letzten befüllten Zeile

Forumthread: VBA Werte in Spalte bis zur letzten befüllten Zeile

VBA Werte in Spalte bis zur letzten befüllten Zeile
07.01.2025 12:17:07
David Brockmann
Hallo in die Runde,
ich benötige mal wieder eure Hilfe.

Ich habe einem Tabellenblatt werde stehen welche ich Spaltenweise markieren, kopieren und in einem anderen Tabellenblatte einfügen möchte.

Das habe ich bisher wie folgt gelöst:


Sheets("Rohdaten_JL-Klappen").Select
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("JL-Klappen").Select
Range("C6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Auf diese Weise kopiere ich ca. 15 Spalten von einem Tabellenblatt in das andere.
Allerdings habe ich das Problem, dass wenn es nur einen Werte (1 Zeile) gibt er alle Zeilen bis zum Tabellenende markiert. Beim einfügen kommt es dann zum Problem, da der kopierte Bereich größer ist als der Bereich in dem eingefügt wird.

Könnt Ihr helfen, wie ich immer nur die Werte bis zur letzten gefüllten Zeile markiere. Die Selektion startet immer in Zeile 2.

Wie immer vielen Dank für eure Hilfe!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Werte in Spalte bis zur letzten befüllten Zeile
07.01.2025 12:57:37
daniel
HI

zwei Möglichkeiten:

a) du prüfst, ob in der Spalte noch weitere Werte vorhanden sind und erweiterst nur dann die Selektion:

 Range("B2").Select

If Selection.Offset(1, 0).value > "" Then Range(Selection, Selection.End(xlDown)).Select


b) wenn unterhalb dieser Tabelle alles leer ist, kannst du auch von unten nach oben springen, dabei ist es dann egal, ob die Spalte nur einen oder mehrere Werte enthält (problematisch wäre, wenn alle Zellen der Spalte gefüllt sind, aber das so unwahrscheinlich, dass man das in der Regel ungeprüft voraussetzen kann)
Range(Cells(2, "B"), Cells(Rows.Count, "B").End(xlup)).Select


Gruß Daniel
Anzeige
AW: VBA Werte in Spalte bis zur letzten befüllten Zeile
07.01.2025 13:02:07
JoWE
Hallo David,
statt deines Codes würde ich das so lösen:
Sheets("Rohdaten_JL-Klappen").Range("B2:B" & Sheets("Rohdaten_JL-Klappen").Range("B" & Rows.Count).End(xlUp).Row).Copy

Sheets("JL-Klappen").Range("C6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Damit würde in der Spalte B tatsächlich nur der benötigte Teil kopiert und in die andere Tabelle eingefügt.
Ganz wichtig, spare Dir doch dieses völlig überflüssige 'Select'ieren was überdies nur Zeit kostet.
Gruß
Jochen
Anzeige
AW: VBA Werte in Spalte bis zur letzten befüllten Zeile
07.01.2025 16:11:12
David Brockmann
Vielen Dank für deine Hilfe.
Dein Vorschlag ist natürlich deutlich schmaler als meiner. Allerdings bleibt ein kleines Problem.
1. Zeile sind Überschriften.
Steht in der Spalte in Zeile 2 und fortlaufend kein Wert dann kopiert er die Überschrift in die andere Tabelle. Gibt es dafür noch eine Optimierung?

Viele Grüße David
Anzeige
AW: VBA Werte in Spalte bis zur letzten befüllten Zeile
07.01.2025 14:43:05
GerdL
Hallo David,

noch ein Gedicht.
Sub Unit()


Dim Quelle As Range, Ziel As Range

With Sheets("Rohdaten_JL-Klappen")
Set Quelle = .Range("B2").Resize(.Cells(.Rows.Count, "B").End(xlUp).Row - 1)
End With
Set Ziel = Sheets("JL-Klappen").Range("C6")

Quelle.Copy
Ziel.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Set Quelle = Nothing: Set Ziel = Nothing

End Sub

Gruß Gerd
Anzeige

Forumthreads zu verwandten Themen

Anzeige