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

Forumthread: Wert in nächste leere Zelle schreiben...

Wert in nächste leere Zelle schreiben...
31.07.2014 16:14:00
Michael
Hallo,
bin neu hier (gerade reingestolpert) und habe gleich mal 'ne Excel-Frage (was sonst):
ich habe mehrere Tabellenblätter (z.Z. 14), in die ich Preise (zur Ermittlung des Durchschnittspreises) eintrage. Jedes Gerät hat eine eigene 'Ausgabezelle', welche den entsprechenden Durchschnittspreis anzeigt. Jedoch muß ich bislang immer bis zur letzten freien Zelle der entsprechenden Spalte runterscrollen, um einen weiteren Wert einzutragen...
nun die Frage:
wie kann ich es erreichen, immer (pro Gerät) eine bestimmte Zelle als 'Eingabezelle' zu verwenden? Der eingegebene Wert soll dann (nach drücken der 'ENTER'-Taste) in die jeweils nächste freie Zelle der entsprechenden Spalte eingetragen werden und anschließend die 'Eingabezelle' wieder gelöscht werden. Ich hatte diesbezüglich ein (oder mehrere) Makro(s) im Sinne... mal 'n Beispiel: Zelle C3 soll die Eingabezelle sein: Wert reinschreiben, ENTER drücken, Wert aus C3 wird in die erste freie Zelle der Spalte C kopiert und der Inhalt von C3 sogleich wieder gelöscht (C3 ist leer). Wie ließe sich soetwas realisieren?
Für Antworten bedanke ich mich schonmal im Voraus ind verbleibe mit frdl. Gruß
Michael

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Wert in nächste leere Zelle schreiben...
31.07.2014 16:52:39
Beverly
Hi michael,
das geht z.B. mit folgendem Code im Codemodul des Tabellenblattes:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngLetzte As Long
If Target.Address = "$C$3" Then
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows. _
Count)
Cells(lngLetzte + 1, 3) = Target
Target.ClearContents
End If
End Sub


Anzeige
AW: Damit das funktioniert...
31.07.2014 17:47:10
Daniel
...sollte man noch die Application.EnableEvents ergänzen:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngLetzte As Long
If Target.Address = "$C$3" Then
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.  _
_
Count)
Application.EnableEvents = False
Cells(lngLetzte + 1, 3) = Target
Target.ClearContents
Application.EnableEvent = True
End If
End Sub
Sich selbst aufrufende Eventmakros sind nur äusserst selten sinnvoll.
Gruß Daniel

Anzeige
Das ist korrekt...
31.07.2014 18:39:51
Beverly
... - hatte den Code ohne zu testen gepostet, sonst wäre mir das aufgefallen. ;-)


AW: Das ist korrekt...
31.07.2014 19:34:29
Michael
Zunächst "Danke" an Beverly und Daniel, ich werde diesen Vorschlag ausprobieren und dann berichten...
Gruß, Michael

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Wert in nächste leere Zelle schreiben


Schritt-für-Schritt-Anleitung

Um einen Wert in die nächste leere Zelle in Excel zu schreiben, kannst Du ein einfaches VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

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

  2. Suche in der linken Seitenleiste das entsprechende Tabellenblatt, in das Du den Code einfügen möchtest.

  3. Klicke mit der rechten Maustaste auf das Tabellenblatt und wähle "Code anzeigen".

  4. Füge den folgenden Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim lngLetzte As Long
       If Target.Address = "$C$3" Then
           lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count)
           Application.EnableEvents = False
           Cells(lngLetzte + 1, 3) = Target
           Target.ClearContents
           Application.EnableEvents = True
       End If
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Trage in Zelle C3 Deinen gewünschten Wert ein und drücke die ENTER-Taste. Der Wert wird in die nächste leere Zelle der Spalte C eingetragen und die Eingabezelle (C3) bleibt leer.


Häufige Fehler und Lösungen

  • Fehler: Der Wert wird nicht in die nächste leere Zelle geschrieben.

    • Lösung: Stelle sicher, dass Du die richtige Zelle (C3) als Eingabezelle definiert hast. Überprüfe auch, ob das Makro korrekt eingebaut wurde.
  • Fehler: Es erscheint eine Fehlermeldung.

    • Lösung: Überprüfe den Code auf Schreibfehler und stelle sicher, dass Application.EnableEvents korrekt gesetzt ist, um Endlosschleifen zu vermeiden.

Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch manuell Zellen ausfüllen, indem Du die Funktion =WENN(ISTLEER(C1);"";C1) nutzt, um Werte zu überprüfen und dann in die nächste Zelle zu kopieren. Dies ist jedoch nicht so effizient wie das Makro.


Praktische Beispiele

Angenommen, Du hast eine Liste von Preisen in Spalte C und möchtest neue Preise in C3 eingeben. Mit dem oben genannten VBA-Skript wird jeder neue Preis, den Du in C3 eingibst, in die nächste leere Zelle in Spalte C geschrieben, ohne dass Du manuell scrollen musst.

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Beispielcode für das Ausfüllen der nächsten leeren Zelle
End Sub

Tipps für Profis

  • Teste den Code immer in einer Kopie Deiner Datei, um Datenverluste zu vermeiden.
  • Du kannst das Makro anpassen, um mehrere Eingabezellen zu unterstützen, z. B. C3, D3 usw., indem Du zusätzliche If-Bedingungen hinzufügst.
  • Nutze Debug.Print, um Informationen in das Direktfenster zu schreiben und den Code zu testen.

FAQ: Häufige Fragen

1. Kann ich das Makro auch für andere Zellen verwenden?
Ja, Du kannst die Adresse der Zielzelle (z.B. $D$3) im Code ändern, um das Makro auf andere Zellen anzuwenden.

2. Was passiert, wenn ich das Makro nicht aktivieren kann?
Stelle sicher, dass die Makros in Excel aktiviert sind. Überprüfe Deine Excel-Optionen unter "Trust Center".

3. Wie kann ich den Code anpassen, um mehrere Spalten abzudecken?
Füge einfach weitere If-Bedingungen hinzu, um unterschiedliche Eingabezellen zu definieren und entsprechende Spalten zu aktualisieren.

4. Ist dieser Code mit allen Excel-Versionen kompatibel?
Der Code funktioniert mit Excel-Versionen, die VBA unterstützen, beispielsweise Excel 2010 und höher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige