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

Wie verwende ich End(XlDown)?

Forumthread: Wie verwende ich End(XlDown)?

Wie verwende ich End(XlDown)?
01.11.2002 14:35:10
Sergio
Hallo

Ich habe eine Frage, die Ihr mir sicher in Sekunden beantworten könnt!

Wie kann ich beim copy / pasten von ("A1")nach ("B1")bei dem zweiten lauf den Befehl geben, dass mir das Macro die nächst leere Zelle in Range("B") suchen soll um dort den Value zu Pasten? Ist jedoch der Wert von ("A1") leer, soll das macro nichts pasten und ohne meldung den Vorgang beenden!


Bsp.:

Sub Macro1()
Range("A1").Copy
Range("B1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").ClearContents
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Wie verwende ich End(XlDown)?
01.11.2002 14:46:33
PeterW
Hallo Sergio,

verstehe ich richtig, immer bei EIngabe eines Wertes in A1 soll dieser in die nächste freie Zelle der Spalte B geschrieben werden?

Der Code gehört in das Klassenmodul der Tabelle.

Gruß
Peter

Re: Wie verwende ich End(XlDown)?
04.11.2002 14:59:08
Sergio
Hallo Peter,

Ich brings nicht auf die Reihe, dass sich beim zweiten Eintrag der Curser auf ("B2") setzt. Obwohl ich deine Aufstellung eingebunden hab. Kannst Du mir nicht ein Macro aufzeigen, dass ich als test laufen lassen kann? Ich bin total laie auf diesem Gebiet. Ich denke mein Problem ist, dass ich nicht weiss wie der Befehl im VBA für "Wenn B1 grösser als 0 ist, dann gehe zu B2"ist. Deshalb konnte ich auch nicht verstehen, für was dieser Abschnitt in deinem Beispiel stand "Cells(lgLetzte, 2) = Cells(1, 1)"?

Ich hoffe, Du hast Verständnis für den Schwerfelligen CH?

Anzeige
Re: Wie verwende ich End(XlDown)?
04.11.2002 18:09:01
PeterW
Hallo Sergio,

das Makro geht einen anderen Weg, es überprüft ob eine Eingabe in A1 erfolgt und sucht dann die nächste freie Zeile in Spalte B.
Cells(lgLetzte, 2) ist die erste freie Zeile in Spalte B und Cells(1, 1) ist das gleiche wie A1.

Hast Du den Code in das Klassenmodul der Tabelle kopiert? Im VBA-Projektfenster Doppelklick auf die Tabelle, in der der Code arbeiten soll und in das sich öffnende Fenster den Code kopieren.

Oder hab ich Dein Problem vielleicht falsch verstanden? Schreib noch einmal genau, was Du erreichen willst.

Gruß
Peter

Anzeige
Re: Wie verwende ich End(XlDown)?
05.11.2002 11:09:20
Sergio
Hallo Peter

Danke für die Erklärung. Bevor ich dir den letzten Nerv raube, könnte ich dir das Excel senden. Die Einbingung hat geklappt aber irgedwie schrieb das Programm dann meine Daten auf die unterste Zelle. Ich versuchte es zu ändern jedoch mit dem Ergebnis Debug.

Vielleicht sollte ich doch noch kurz erklären, was das Programm tun sollte:

Es sollte mir einen vorahndenen Wert ("C31":"D31")beim anklicken des Button den ich kreiert habe in ein anderes vorhandenes Sheet angefangen von ("B2":"C2") Copy.Pasten. Jedesmal, wenn ich den Button wieder drücke, soll er mir Den Wert von ("C31":"D31") auf die nächst leere Zelle angefangen bei ("B2":"C2") nach unten Copy.Pasten.

Mein Macro bis jetzt:

Sub Save_Kunde()
'
' Save_Kunde Macro
' Macro recorded 30.10.02 by Cenci

Sheets("Klassifikation").Select
Range("C31:D31").Copy
Sheets("Erfasste Kunden neu").Select
' HIER MÜSSTE DAS MACRO VON "B3" ANFANGEN ZU SUCHEN UND DEN WERT IN DIE NÄCHST LEERE ZELLE PASTEN
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("Eingabe").Select
Range("f13,i13,l13,f16,i16,l16,f19,i19,l19,f22,i22,l22,f25,i25").Select
Range("i25").Activate
Application.CutCopyMode = False
Selection.ClearContents
Range("a1").Select
ActiveWorkbook.Save
End Sub

Falls Du das Excel brauchst, meine E-Mail: sergio.cenci@cchbc.com

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

End(XlDown) in Excel VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

Um die nächste leere Zelle in der Spalte B zu finden und dort den Wert von A1 zu platzieren, kannst Du den folgenden VBA-Code verwenden:

Sub Macro1()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("DeinBlattname") ' Ersetze "DeinBlattname" durch den tatsächlichen Namen deines Blattes

    If ws.Range("A1").Value <> "" Then
        Dim lgLetzte As Long
        lgLetzte = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row + 1 ' Nächste leere Zeile in Spalte B
        ws.Cells(lgLetzte, 2).Value = ws.Range("A1").Value ' Wert aus A1 in die nächste leere Zeile in B
        ws.Range("A1").ClearContents ' A1 leeren
    End If
End Sub

Dieser Code prüft, ob A1 nicht leer ist. Ist dies der Fall, wird der Wert in die nächste freie Zelle in Spalte B eingefügt und A1 wird geleert.


Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung"
    Ursache: A1 enthält einen nicht unterstützten Datentyp. Stelle sicher, dass A1 einen gültigen Wert hat (z.B. Text oder Zahl).

  • Fehler: "Zielbereich zu groß"
    Ursache: Du versuchst, einen Wert in eine Zelle außerhalb des verfügbaren Bereichs zu kopieren. Überprüfe, ob Du den richtigen Bereich in den Zellen angibst.


Alternative Methoden

Eine alternative Methode, um die nächste leere Zelle zu finden, ist die Verwendung von .End(xlDown). Hier ein Beispiel, wie Du diese Methode verwenden kannst:

Sub AlternateMacro()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("DeinBlattname")

    If ws.Range("A1").Value <> "" Then
        ws.Range("B1").End(xlDown).Offset(1, 0).Value = ws.Range("A1").Value
        ws.Range("A1").ClearContents
    End If
End Sub

Hierbei wird von B1 aus die nächste leere Zelle in der Spalte B gesucht.


Praktische Beispiele

Ein weiteres Beispiel könnte sein, Werte aus einem anderen Blatt zu kopieren. Wenn Du Werte von C31:D31 in ein anderes Blatt in die nächste leere Zelle von B2:C2 kopieren möchtest, könnte der Code folgendermaßen aussehen:

Sub Save_Kunde()
    Dim wsQuell As Worksheet
    Dim wsZiel As Worksheet
    Set wsQuell = ThisWorkbook.Sheets("Klassifikation")
    Set wsZiel = ThisWorkbook.Sheets("Erfasste Kunden neu")

    wsQuell.Range("C31:D31").Copy
    Dim ZielZeile As Long
    ZielZeile = wsZiel.Cells(wsZiel.Rows.Count, 2).End(xlUp).Row + 1 ' Nächste leere Zeile in Spalte B
    wsZiel.Cells(ZielZeile, 2).PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False
End Sub

Tipps für Profis

  • Nutze die .End(xlDown)-Methode, um schnell zum Ende einer Liste zu navigieren, aber sei vorsichtig, wenn es leere Zellen in der Liste gibt, da dies die Position beeinflussen kann.
  • Kombiniere .End(xlDown) mit .Offset für genauere Anpassungen, besonders in dynamischen Datenbereichen.
  • Teste Deinen Code regelmäßig im VBA-Editor, um sicherzustellen, dass er wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie finde ich die letzte befüllte Zelle in einer Spalte?
Verwende Cells(Rows.Count, Spalte).End(xlUp).Row, um die letzte befüllte Zeile einer bestimmten Spalte zu finden.

2. Was passiert, wenn ich .End(xlDown) auf eine leere Zelle anwende?
Wenn Du .End(xlDown) auf eine leere Zelle anwendest, springt der Cursor bis zur nächsten befüllten Zelle. Wenn keine befüllte Zelle vorhanden ist, wird der Cursor bis zum Ende der Tabelle verschoben.

3. Kann ich mehrere Zellen auf einmal kopieren und einfügen?
Ja, Du kannst einen Bereich kopieren, indem Du Range("C31:D31").Copy verwendest und dann den Zielbereich mit PasteSpecial entsprechend anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige