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

End(xlDown) - was heisst das?

Forumthread: End(xlDown) - was heisst das?

End(xlDown) - was heisst das?
27.04.2006 17:07:15
gemba
Hallo,
das ist mein Makro, mit dem ich verschiedene Waehrungsformate ($, Euro etc.) einer Spalte zuweise. Meine Artikelliste hat in der Mitte drei Leerzeilen. Bis zur Mitte werden die Waehrungsformate korrekt zugewiesen, im unteren Teil hingegen bleibt immer dieselbe Waehrung stehen. Ich vermute jetzt, dass die Anweisung End(xlDown) das in Schuld ist. Was bedeutet sie? Wie muss ich das Makro aendern, damit auch der untere Teil der Liste Formate zugewiesen bekommt?

Private Sub Worksheet_Calculate()
Dim FormatZelle As Range
Dim lZeile As Integer
lZeile = Range("G5").End(xlDown).Row
Select Case Worksheets("help").Range("D81")
Case 1
Set FormatZelle = Worksheets("help").Range("G77")
Case 2
Set FormatZelle = Worksheets("help").Range("G78")
Case 3
Set FormatZelle = Worksheets("help").Range("G79")
End Select
Range("G4:G" & lZeile).NumberFormat = FormatZelle.NumberFormat
End Sub

Danke!!!!
gemba
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: End(xlDown) - was heisst das?
27.04.2006 17:09:15
Leo
lZeile = Cells(Rows.Count,7).End(xlUp).Row
mfg Leo
AW: End(xlDown) - was heisst das?
27.04.2006 17:10:03
Ramses
Hallo
Das Makro sucht unterhalb von G5 nach der letzten beschriebenen Zelle auf die eine Leerzelle folgt.
Demzufolge also alles korrekt.
Verwende stattdessen
lZeile = Range("G65536").End(xlup).Row
Dann sucht EXCEL aufsteigend von der Zelle G65536 nach der ersten Zelle in der ein Inhalt steht.
Gruss Rainer
Anzeige
klappt!!!
27.04.2006 17:17:41
gemba
Hi,
vielen Dank, es klappt einwandfrei!
Was Kleinigkeiten so bewirken koennen....
CU, gemba
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

End(xlDown) und seine Anwendung in VBA


Schritt-für-Schritt-Anleitung

Um die Verwendung von End(xlDown) in einem VBA-Makro zu verstehen, folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel, indem Du ALT + F11 drückst.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste im Projektfenster auf dein Arbeitsblatt und wähle „Einfügen“ > „Modul“.

  3. Füge das folgende Beispiel-Makro ein:

    Private Sub Worksheet_Calculate()
        Dim FormatZelle As Range
        Dim lZeile As Integer
        lZeile = Range("G5").End(xlDown).Row
        ' Hier kannst Du weitere Codezeilen hinzufügen
    End Sub
  4. Ändere die End(xlDown)-Anweisung zu End(xlUp), wenn Du die letzte nicht-leere Zelle von unten nach oben finden möchtest. Zum Beispiel:

    lZeile = Range("G65536").End(xlUp).Row
  5. Teste das Makro, um sicherzustellen, dass es die korrekten Zellen formatiert.


Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht wie gewünscht ausgeführt.

    • Lösung: Überprüfe die Zeile mit End(xlDown). Wenn in der Spalte nach G5 Leerzellen vorhanden sind, wird das Makro nur bis zur ersten Leerzeile arbeiten. Nutze stattdessen End(xlUp) für eine aufsteigende Suche.
  • Fehler: Falsche Zellen werden formatiert.

    • Lösung: Stelle sicher, dass Du die richtige Range angibst. Überprüfe die Startzelle und ändere sie gegebenenfalls.

Alternative Methoden

Wenn Du mit End(xlDown) nicht die gewünschten Ergebnisse erzielst, kannst Du folgende Alternativen ausprobieren:

  1. Verwende Cells anstelle von Range:

    lZeile = Cells(Rows.Count, 7).End(xlUp).Row
  2. Nutze eine Schleife, um alle Zellen in der Spalte zu überprüfen und die Formatierung entsprechend anzuwenden:

    Dim i As Integer
    For i = 5 To lZeile
        If Not IsEmpty(Cells(i, 7)) Then
            Cells(i, 7).NumberFormat = FormatZelle.NumberFormat
        End If
    Next i

Praktische Beispiele

Hier sind einige praktische Beispiele, die die Verwendung von End(xlDown) und End(xlUp) in VBA verdeutlichen:

  • Beispiel 1: Letzte gefüllte Zelle finden:

    Sub LetzteZelle()
        Dim letzteZelle As Integer
        letzteZelle = Range("A1").End(xlDown).Row
        MsgBox "Die letzte gefüllte Zelle in Spalte A ist: " & letzteZelle
    End Sub
  • Beispiel 2: Datenformatierung basierend auf Werten:

    Sub Formatierung()
        Dim lZeile As Long
        lZeile = Range("B1").End(xlDown).Row
        Range("B1:B" & lZeile).Interior.Color = RGB(255, 255, 0) ' Gelb
    End Sub

Tipps für Profis

  • Vermeide End(xlDown), wenn Du sicher sein möchtest, dass Du immer die letzte gefüllte Zelle erfasst. Nutze End(xlUp), um von unten zu suchen, besonders in Spalten mit vielen Leerzeilen.
  • Nutze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Teste Deine Makros in einer Kopie der Datei, um unbeabsichtigte Änderungen an wichtigen Daten zu vermeiden.

FAQ: Häufige Fragen

1. Was bedeutet End(xlDown) genau?
End(xlDown) sucht nach der nächsten nicht-leeren Zelle in einer Spalte, beginnend von der angegebenen Zelle nach unten.

2. Wie kann ich Leerzellen in meiner Spalte umgehen?
Verwende End(xlUp), um die letzte gefüllte Zelle von unten zu finden, was oft hilfreicher ist, wenn Du mit Leerzeilen arbeitest.

3. Was ist der Unterschied zwischen End(xlDown) und End(xlUp)?
End(xlDown) sucht nach unten und stoppt an der ersten Leerzeile, während End(xlUp) von unten nach oben sucht und die erste gefüllte Zelle findet.

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