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

Letzte Zelle in bestimmter Spalte finden (VBA)

Forumthread: Letzte Zelle in bestimmter Spalte finden (VBA)

Letzte Zelle in bestimmter Spalte finden (VBA)
31.07.2003 11:56:53
Fritz
Hallo Experten,
ich möchte mittels VBA etwas aus Spalte B nach Spalte H kopieren. Dabei sieht meine Tabelle wie folgt aus.
Jeden Monat ergänze ich meine Tabelle in Spalte B nach unten hin um eine Zeilenanzahl X, wobei x jeden Monat anders sein kann.
Dann soll per Macro der neue Inhalt aus Spalte B nach Spalte H kopiert werden.
Dazu muß ich feststellen bis wohin Spalte H bereits gefüllt ist und dann +1 und ich habe die erste neue Zelle in Spalte B.
Spalte B muß dann bis zum Ende der Einträge markiert werden und kann dann nach
Spalte H (an des ermittelte Ende) kopiert werden.
Der macrorekorder hilft mir da leider nicht weiter da eben keine fixen Mengen kopiert und auch kein fixer Start und Endbereich vorliegen.
Kann mir jemand helfen?
Gruß Fritz
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Letzte Zelle in bestimmter Spalte finden (VBA)
31.07.2003 12:04:53
WernerB.
Hallo Fritz,
Letzte Zelle mit Inhalt in Spalte "H":
LaR = Cells(Rows.Count, 8).End(xlUp).Row
Letzte Zelle mit Inhalt in Spalte "B":
LaR = Cells(Rows.Count, 2).End(xlUp).Row
Gruß WernerB.

AW: Letzte Zelle in bestimmter Spalte finden (VBA)
31.07.2003 12:14:38
Koenig W.
Hallo Fritz
so könnte es funktionieren.

Sub Kopiertest()
Dim str1 As String
Dim str2 As String
'letzte gebrauchte Zelle in Spalte H
'und eine nach unten
Range("H65536").End(xlUp).Offset(1, 0).Select
'Adresse der Zelle 6 Spalten links der aktiven
'd.h. erste "neue in Spalte B
str1 = ActiveCell.Offset(0, -6).Address
'letzte "neue" in Spalte B
str2 = Range("B65536").End(xlUp).Address
'Bereich der "neuen" kopieren
Range(str1 + ":" + str2).Copy
'Ab der immer noch aktiven Zelle H
'das kopierte einfügen
ActiveCell.PasteSpecial
End Sub

Gruss Wilhelm

Anzeige
klappt wunderbar, danke Dir vielmals (o.T.)
31.07.2003 14:17:17
Fritz
c

AW: Letzte Zelle in bestimmter Spalte finden (VBA)
31.07.2003 13:24:37
Dan
' Hallo Fritz,
' ich schicke dir eine function, die die zeile der nachsten freien zelle in bestimmter
' spalte zuruck gibt. Die

Function hat 3 parameter : 1.der worksheet, wo man sucht,
' 2.die spalte wo man sucht, 3.die zeile, wo man mit der suche beginnen will. Wenn die
' Start-Zelle leer ist, gibt die 

Function die zeile dieser zellen zuruck. Vielleicht
' kann dir diese func. helfen :-). Mfg. Dan
Option Explicit
Public 

Function get_row_of_last_free_cell(ByVal sh As Worksheet, Optional ByVal col As Integer = 1, Optional ByVal starting_row As Integer = 1) As Long
Dim row As Long
On Error GoTo hErr
row = starting_row
With sh
Do While (.Cells(row, col).Value <> "")
row = row + 1
Loop
End With
get_row_of_last_free_cell = row
Exit Function
hErr:
MsgBox "Laufzeitsfehler Nr. " & Err.Number & ". " & Err.Description
get_row_of_last_free_cell = 0
End Function

Public

Sub CallFuncExample()
' wenn die Start-Zelle leer ist, gibt die 

Function ihre Zeile zuruck
Dim lngNextRow As Long
lngNextRow = get_row_of_last_free_cell(Worksheets("test")) ' suche beginnt in der 1.Spalte und in der 1.Zeile
Debug.Print "col = 1, row = 1 : " & lngNextRow
lngNextRow = get_row_of_last_free_cell(Worksheets("test"), , 10) ' suche beginnt in der 1.Spalte und in der 10.Zeile
Debug.Print "col = 1, row = 10 : " & lngNextRow
lngNextRow = get_row_of_last_free_cell(Worksheets("test"), 3, 15) ' suche beginnt in der 3.Spalte und in der 15.Zeile
Debug.Print "col = 3, row = 15 : " & lngNextRow
End Sub


Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Letzte Zelle in einer bestimmten Spalte finden mit VBA


Schritt-für-Schritt-Anleitung

Um die letzte Zelle in einer bestimmten Spalte mit VBA zu finden, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", wähle "Einfügen" und dann "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Sub FindeLetzteZelleInSpalte()
       Dim letzteZelle As Long
       Dim spalte As Integer
    
       spalte = 2 ' Beispiel für Spalte B
       letzteZelle = Cells(Rows.Count, spalte).End(xlUp).Row
    
       MsgBox "Die letzte Zelle in Spalte B ist: " & letzteZelle
    End Sub
  4. Ändere die Variable spalte, falls du eine andere Spalte untersuchen möchtest (1 = A, 2 = B, usw.).

  5. Führe das Makro aus: Klicke auf F5 oder gehe zu "Ausführen" und wähle "Sub/UserForm ausführen".

Jetzt solltest du die letzte Zelle mit Inhalt in der angegebenen Spalte ermitteln können.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitsfehler 1004

    • Lösung: Stelle sicher, dass du die richtige Arbeitsmappe und das richtige Arbeitsblatt ausgewählt hast.
  • Fehler: Falsches Ergebnis

    • Lösung: Überprüfe, ob in der Spalte leere Zellen vorhanden sind, die das Ergebnis beeinflussen könnten.

Alternative Methoden

Eine Alternative zur Verwendung von End(xlUp) ist die Verwendung einer benutzerdefinierten Funktion, die die letzte beschriebene Zelle in einer Spalte findet. Der folgende Code zeigt ein Beispiel dafür:

Function letzteZelleInSpalte(sh As Worksheet, col As Integer) As Long
    letzteZelleInSpalte = sh.Cells(sh.Rows.Count, col).End(xlUp).Row
End Function

Diese Funktion gibt die Zeilennummer der letzten Zelle mit Inhalt in der angegebenen Spalte zurück.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Code anpassen kannst:

  1. Letzte Zelle in Spalte B finden und den Wert ausgeben:

    Sub LetzteZelleWert()
       Dim letzteZelle As Long
       letzteZelle = Cells(Rows.Count, 2).End(xlUp).Row
       MsgBox "Wert der letzten Zelle in Spalte B: " & Cells(letzteZelle, 2).Value
    End Sub
  2. Letzte Zelle in Spalte H ermitteln und in eine andere Zelle kopieren:

    Sub KopiereWert()
       Dim letzteZelle As Long
       letzteZelle = Cells(Rows.Count, 8).End(xlUp).Row ' Spalte H
       Cells(1, 10).Value = Cells(letzteZelle, 8).Value ' Kopiere nach J1
    End Sub

Tipps für Profis

  • Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind.
  • Nutze With-Blöcke, um den Code zu optimieren und die Lesbarkeit zu verbessern.
  • Experimentiere mit Offset, um benachbarte Zellen relativ zur gefundenen letzten Zelle auszuwählen oder zu manipulieren.

FAQ: Häufige Fragen

1. Wie finde ich die letzte beschriebene Zelle in einer anderen Spalte? Um die letzte beschriebene Zelle in einer anderen Spalte zu finden, ändere einfach den Wert der spalte-Variablen im Code.

2. Was ist der Unterschied zwischen End(xlUp) und End(xlDown)? End(xlUp) sucht von unten nach oben nach der letzten Zelle mit Inhalt, während End(xlDown) von oben nach unten sucht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige