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

VBA: Wert in erste freie Zelle

Forumthread: VBA: Wert in erste freie Zelle

VBA: Wert in erste freie Zelle
05.02.2020 18:52:27
Fritz_W
Hallo VBA-Kundige
bitte um Hilfe wie folgt:
Im Tabellenblatt "Tabelle2" stehen in Spalte A ab Zeile 2 aufsteigend Zahlen, Ich benötige nun ein Makro, das in die erste leere Zelle der Spalte A die nächst höhere Zahl als die in der unmittelbar darüberliegenden Zelle enthaltene Zahl (= Zelle mit dem letzten Eintrag in Spalte) einfügt und in die Spalte B der gleichen Zahl dem Text "Aufgabe " die zahl aus Spalte A hinzufügt.
Beispiel: Die Zelle A24 ist die erste leere Zelle der Spalte A. In der Zelle davor (A23) steht die Zahl 22:
Das Makro sollte in diesem Fall in die Zelle A24 die Zahl 23 und in die Zelle B4 den Text "Aufgabe 24" einfügen.
Das Makro wird aus Tabellenblatt "Tabelle1" aufgerufen.
Für eure Unterstützung im Voraus besten Dank.
mfg
Fritz
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Wert in erste freie Zelle
05.02.2020 19:06:50
Regina
Hi Fritz,
das sollte so passen:
Public Sub Freie_Zelle_fuellen()
Dim obj_wks As Worksheet
Dim lng_zeile As Long
Set obj_wks = Worksheets("Tabelle1")
With obj_wks
lng_zeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lng_zeile, 1) = .Cells(lng_zeile - 1, 1).Value + 1
.Cells(lng_zeile, 2) = "Aufgabe " & .Cells(lng_zeile, 1)
End With
End Sub
Gruß Regina
Anzeige
AW: VBA: Wert in erste freie Zelle
05.02.2020 19:26:16
Fritz_W
Hallo Regina,
ja, das funktioniert wie gewünscht.
Ganz herzlichen Dank
mfg
Fritz
AW: VBA: Wert in erste freie Zelle
05.02.2020 19:08:33
ChrisL
Hi Fritz
Mein ungetestetes Meisterwerk :)
with worksheets("Tabelle1").cells(rows.count,1).end(xlup)
.offset(1,0) = .value+1
.offset(1,1) = "Aufgabe " & .value+1
end with
cu
Chris
Anzeige
AW: VBA: Wert in erste freie Zelle
05.02.2020 19:28:22
Fritz_W
Hallo Chris,
auch Deine Variante funktioniert wie gewünscht.
Herzlichen Dank für die Hilfe.
mfg
Fritz
AW: VBA: Wert in erste freie Zelle
05.02.2020 19:10:51
Werner
Hallo,
deine Beschreibung weicht aber von deinem Beispiel ab.
Laut Beschreibung soll in die erste frei Zelle in Spalte A der Wert 23 eingefügt und dann in Zelle B4 die gleiche Zahl eingefügt werden.
Laut deinem Beispiel wird aber in Spalte A der Wert 23 eingefügt und in B4 Aufgabe 24.
Public Sub aaa()
Dim loLetzte As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row
.Cells(loLetzte + 1, "A") = .Cells(loLetzte, "A") + 1
.Cells(4, "B") = "Aufgaabe " & .Cells(.Rows.Count, "A").End(xlUp) + 1
End With
End Sub
Gruß Werner
Anzeige
AW: VBA: Wert in erste freie Zelle
05.02.2020 19:37:04
Fritz_W
Hallo Werner,
vielen Dank für Deine erneute Unterstützung.
Das Makro schreibt korrekt die richtige Zahl in die betreffende Zelle in Spalte A. Es fügt allerdings den Text "Aufgabe …" in die Zeile 3 der Spalte B und erhöht die Zahl zusätzlich noch um 1.
mfg
Fritz
AW: VBA: Wert in erste freie Zelle
05.02.2020 20:03:18
Werner
Hallo,
ist zwar egal, weil du funktionierende Lösungen hast.
Aber ich hatte dir geschrieben, dass deine Bescreibung von deinem dargestellten Beispiel abweicht.
Lies mal deinen Eingangsbeitrag.
Beispiel: Die Zelle A24 ist die erste leere Zelle der Spalte A. In der Zelle davor (A23) steht die Zahl 22:
Das Makro sollte in diesem Fall in die Zelle A24 die Zahl 23 und in die Zelle B4 den Text "Aufgabe 24" einfügen.

Gruß Werner
Anzeige
AW: VBA: Wert in erste freie Zelle
05.02.2020 20:12:11
Fritz_W
Hallo Werner,
bitte entschuldige meine Schlamperei, es sollte - auf mein Beispiel bezogen - heißen:
"Das Makro sollte in diesem Fall in die Zelle A24 die Zahl 23 und in die Zelle B4 den Text "Aufgabe 23" einfügen."
Danke für Dein Verständnis und nochmals vielen Dank.
mfg
Fritz
Anzeige
Weitere Korrektur!
05.02.2020 20:16:06
Fritz_W
Hallo Werner,
wie Du wohl bemerkt hast, hätte ich auch B24 statt B4 heißen müssen.
Ist mir echt peinlich.
mfg
Fritz
AW: VBA: Wert in erste freie Zelle
05.02.2020 20:47:15
GerdL
Moin
With Worksheets("Tabelle1")
With .Cells(.Rows.Count, 1).End(xlUp)
.Offset(1, 0).Resize(1, 2) = Array(.Value + 1, "Aufgabe " & .Value + 1)
End With
End With

Gruß Gerd
Anzeige
AW: VBA: Wert in erste freie Zelle
05.02.2020 21:04:58
Fritz_W
Hallo Gerd,
perfekt, auch Dir vielen Dank für die erneute Hilfe.
Würde mir wünschen, dass ich beim Betrachten dieser verschiedenen funktionierenden Codes in Sachen VBA etwas lerne.
mfg
Fritz
;

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

VBA: Wert in die erste freie Zelle schreiben


Schritt-für-Schritt-Anleitung

Um in Excel VBA den nächst höheren Wert in die erste leere Zelle einer Spalte zu schreiben, gehst du wie folgt vor:

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

  2. Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (dein_dateiname)" und wähle "Einfügen" > "Modul".

  3. Füge den folgenden Code in das neue Modul ein:

    Public Sub Freie_Zelle_fuellen()
        Dim obj_wks As Worksheet
        Dim lng_zeile As Long
        Set obj_wks = Worksheets("Tabelle1")
        With obj_wks
            lng_zeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(lng_zeile, 1) = .Cells(lng_zeile - 1, 1).Value + 1
            .Cells(lng_zeile, 2) = "Aufgabe " & .Cells(lng_zeile, 1)
        End With
    End Sub
  4. Schließe den VBA-Editor und kehre zur Excel-Oberfläche zurück.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf "Ausführen" klickst.

Dieses Makro fügt in die erste leere Zelle der Spalte A die nächst höhere Zahl ein und ergänzt in der Spalte B den Text "Aufgabe" mit der jeweiligen Zahl.


Häufige Fehler und Lösungen

  • Fehler: Das Makro schreibt die falsche Zahl in die Zelle.

    • Lösung: Überprüfe, ob du die richtige Zelle für den letzten Eintrag referenzierst. Stelle sicher, dass du lng_zeile - 1 für den Wert verwendest.
  • Fehler: Der Text in Spalte B wird nicht korrekt gesetzt.

    • Lösung: Achte darauf, dass du die richtige Zelle für "Aufgabe" referenzierst und den Code entsprechend anpasst.

Alternative Methoden

Eine alternative Methode, um den Wert in die erste freie Zelle zu schreiben, besteht darin, die With-Anweisung zu verwenden. Hier ist ein Beispiel:

With Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp)
    .Offset(1, 0) = .Value + 1
    .Offset(1, 1) = "Aufgabe " & .Value + 1
End With

Diese Methode ist kompakter und kann in vielen Fällen nützlich sein, wenn du den Code lesbarer gestalten möchtest.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, das Konzept besser zu verstehen:

  1. Beispiel 1: Wenn die letzte ausgefüllte Zelle in Spalte A die Zahl 22 enthält, wird in die nächste leere Zelle (A24) die Zahl 23 geschrieben und in B24 der Text „Aufgabe 23“ eingefügt.
  2. Beispiel 2: Wenn in Spalte A die letzte Zahl 45 ist, wird in A46 die Zahl 46 und in B46 der Text „Aufgabe 46“ eingefügt.

Du kannst diese Beispiele leicht in deinem eigenen Makro umsetzen, indem du die oben beschriebenen Schritte befolgst.


Tipps für Profis

  • Debugging: Nutze das Debugging-Tool im VBA-Editor, um deinen Code Schritt für Schritt zu überprüfen.
  • Variablen: Verwende aussagekräftige Variablennamen, um deinen Code verständlicher zu machen.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Probleme zu vermeiden, z.B. mit On Error Resume Next.

FAQ: Häufige Fragen

1. Wie kann ich das Makro automatisch ausführen, wenn ich die Excel-Datei öffne? Du kannst das Makro im Workbook_Open-Ereignis platzieren, um es beim Öffnen der Datei automatisch auszuführen.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code funktioniert in allen modernen Excel-Versionen, die VBA unterstützen, einschließlich Excel 2010, 2013, 2016, 2019 und Office 365.

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