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

Forumthread: wert per VBA in nächste leere zelle schreiben

wert per VBA in nächste leere zelle schreiben
Michael
hallo!
ich brauche bitte hilfe. ich habe eine leere tabelle und möchte diese mit werten füllen. allerdings nur so, dass kein wert doppelt vorkommt. habe folgenden ausdruck, hänge jetzt aber. die kontrolle funktioniert, nur das einfügen in die nächste leere zelle der spalte A bekomme ich nicht hin.
hier der code:
Sub Schaltfläche1_KlickenSieAuf()
Dim str1 As String
Dim c As Range
With Worksheets("KONTROLLE").Range("A1:A1000")
str1 = InputBox("Artikel lesen", "Artikel")
Set c = .Find(str1, LookIn:=xlValues)
If Not c Is Nothing Then
MsgBox ("Artikel -- " & str1 & " -- bereits vorhanden"), vbExclamation, "ENDE"
Else
End If
End With
End Sub
könnt ihr mir da bitte helfen?
danke!!
mike
Anzeige
AW: wert per VBA in nächste leere zelle schreiben
26.06.2010 09:55:04
fcs
Hallo Michael,
du solltest auch noch einen Parameter für die Suche ergänzen.
Gruß
Franz
Sub Schaltfläche1_KlickenSieAuf()
Dim str1 As String
Dim c As Range
With Worksheets("KONTROLLE")
str1 = InputBox("Artikel lesen", "Artikel")
Set c = .Columns(1).Find(str1, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
MsgBox ("Artikel -- " & str1 & " -- bereits vorhanden"), vbExclamation, "ENDE"
Else
If IsEmpty(.Cells(1, 1)) Then
.Cells(1, 1).Value = str1
Else
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = str1
End If
End If
End With
End Sub

Anzeige
AW: wert per VBA in nächste leere zelle schreiben
26.06.2010 10:08:00
Michael
super danke!
letzte frage: wäre möglich, wenn der artikel geschrieben wurde, sich wieder das fenster für die eingabe des nächsten öffnet, ohne dass wieder den button drücken muss?
AW: wert per VBA in nächste leere zelle schreiben
26.06.2010 11:24:12
fcs
Hallo Michael,
mit der folgenden Anpassung wird die Inputbox solange wieder angezeicht, bis kein Text eingegeben ist oder der Abbrechen-Button gewählt wird.
Gruß
Franz
Sub Schaltfläche1_KlickenSieAuf()
Dim str1 As String
Dim c As Range
With Worksheets("KONTROLLE")
Do
str1 = InputBox("Artikel lesen", "Artikel", Default:=str1)
If str1 = "" Then Exit Do 'Abbrechen wurde gewählt
Set c = .Columns(1).Find(str1, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
MsgBox ("Artikel -- " & str1 & " -- bereits vorhanden"), vbExclamation, "ENDE"
Else
If IsEmpty(.Cells(1, 1)) Then
.Cells(1, 1).Value = str1
Else
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = str1
End If
End If
Loop
End With
End Sub

Anzeige
AW: wert per VBA in nächste leere zelle schreiben
26.06.2010 12:45:44
Michael
danke, funktioniert nun alles super!!
vielen dank nochmal!!
AW: wert per VBA in nächste leere zelle schreiben
26.06.2010 10:09:05
Gerd
Hallo Mike!
Mit noch etwas Feile an der Messagbox.
Sub Schaltfläche1_KlickenSieAuf()
Dim str1 As String, strMsg As String
Dim c As Range
str1 = InputBox("Artikel lesen", "Artikel")
If Len(str1) = 0 Then
strMsg = "Keinen Suchbegriff eingegeben!"
Else
With Worksheets("KONTROLLE").Range("A1:A1000")
Set c = .Find(str1, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
strMsg = "Artikel -- " & str1 & " -- bereits vorhanden"
Else
.Cells(IIf(Len(.Cells(1, 1)) = 0, 1, IIf(Len(.Cells(2, 1)) = 0, 2, .Cells(1, 1).End( _
xlDown).Row + 1)), 1) = str1
End If
End With
End If
If Len(strMsg) > 0 Then MsgBox strMsg, vbExclamation, "ENDE"
End Sub
Gruß Gerd
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte per VBA in die nächste leere Zelle schreiben


Schritt-für-Schritt-Anleitung

Um Werte per VBA in die nächste leere Zelle einer Excel-Tabelle zu schreiben, kannst du den folgenden VBA-Code verwenden. Dieser Code überprüft, ob der eingegebene Artikel bereits vorhanden ist, und fügt ihn ansonsten in die nächste leere Zelle der Spalte A ein.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub Schaltfläche1_KlickenSieAuf()
    Dim str1 As String
    Dim c As Range
    With Worksheets("KONTROLLE")
        Do
            str1 = InputBox("Artikel lesen", "Artikel", Default:=str1)
            If str1 = "" Then Exit Do 'Abbrechen wurde gewählt
            Set c = .Columns(1).Find(str1, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then
                MsgBox ("Artikel -- " & str1 & " -- bereits vorhanden"), vbExclamation, "ENDE"
            Else
                If IsEmpty(.Cells(1, 1)) Then
                    .Cells(1, 1).Value = str1
                Else
                    .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = str1
                End If
            End If
        Loop
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Füge einen Button hinzu (Entwicklertools > Einfügen > Schaltfläche) und verlinke ihn mit dem Makro.

Jetzt kannst du auf den Button klicken und Werte eingeben, die in die nächste leere Zelle geschrieben werden.


Häufige Fehler und Lösungen

  • Problem: Artikel wird nicht in die nächste leere Zelle geschrieben.

    • Lösung: Stelle sicher, dass der Code die Zelle korrekt findet. Die Zeile .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = str1 sorgt dafür, dass der Wert in die erste leere Zelle eingefügt wird.
  • Problem: Die InputBox öffnet sich nicht mehr.

    • Lösung: Überprüfe, ob die Schleife im Code (Do...Loop) korrekt funktioniert. Wenn kein Artikel eingegeben wird, sollte die Schleife enden.

Alternative Methoden

Falls du keine VBA-Lösung nutzen möchtest, kannst du auch die Excel-Funktion =EINDE() verwenden, um die nächste leere Zelle in einer Formel zu finden. Diese Methode ist jedoch weniger dynamisch, da sie nicht interaktiv ist.


Praktische Beispiele

Angenommen, du möchtest Artikelbezeichnungen in die Spalte A einfügen. Mit dem obigen VBA-Code kannst du beispielsweise die Artikel "Stuhl", "Tisch" und "Lampe" eingeben. Der Code fügt jeden Artikel in die nächste leere Zelle der Spalte A ein, ohne dass doppelte Werte entstehen.


Tipps für Profis

  • Nutze die Find-Methode mit verschiedenen Suchparametern, um die Effizienz zu erhöhen.
  • Füge weitere Validierungen hinzu, um sicherzustellen, dass die Eingaben den gewünschten Kriterien entsprechen (z.B. kein Leerzeichen).
  • Experimentiere mit benutzerdefinierten Fehlermeldungen, um die Benutzerfreundlichkeit zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um in eine andere Spalte zu schreiben? Du musst die Referenz .Columns(1) und .Cells(1, 1) auf die entsprechende Spalte ändern (z.B. .Columns(2) für Spalte B).

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren, solange die Entwicklertools aktiviert sind.

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