Clever-Excel-Forum

Normale Version: Werte in Tabelle schreiben - Nur wenn nicht bereits vorhanden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Community,

ich hänge hier etwas fest. Ich habe mir angewöhnt Inhalte aus einer Userform wie folgt in eine Tabelle zu schreiben:

Zitat:Dim lngZeile As Long
Dim FreigabeNr As Variant

With Worksheets("Freigaben")
    lngZeile = .Cells(10000, 1).End(xlUp).Row
     If lngZeile = 9999 Then
        MsgBox "Kein platz mehr!"
        Exit Sub
     Else
        lngZeile = IIf(lngZeile < 1, 1, lngZeile + 1)
        FreigabeNr = lngZeile - 3
             Cells(lngZeile, 1).Value = lngZeile - 3
   
    Cells(lngZeile, 2) = Label28.Caption
    Cells(lngZeile, 3) = TextBox5.Value
    End If
End With



Jetzt habe ich jedoch das Problem, dass ich gerne erst prüfen würde ob irgendwo in der Spalte 2 Label28.Caption erhalten ist. ( Cells(lngZeile, 2) = Label28.Caption )
Falls ja, soll eine Meldung kommen: Bereits vorhanden.

Wenn ich nun den Code in folgendes umwandel:

Zitat:Dim lngZeile As Long
Dim FreigabeNr As Variant
With Worksheets("Freigaben")
lngZeile = .Cells(10000, 1).End(xlUp).Row
     If lngZeile = 9999 Then
        MsgBox "Kein platz mehr!"
        Exit Sub
     ElseIf Cells(lngZeile, 2) = Label28.Caption Then
     MsgBox "Eintragung bereits vorhanden"
     Else
        lngZeile = IIf(lngZeile < 1, 1, lngZeile + 1)
        FreigabeNr = lngZeile - 3
             Cells(lngZeile, 1).Value = lngZeile - 3
            
            Cells(lngZeile, 2) = Label28.Caption
            Cells(lngZeile, 3) = TextBox5.Value

        End If
End With


Das hat aber nur zur Folge, das die unterste ausgefüllte Zeile nicht Label28 erhalten darf. Ich glaube es gibt eine einfachere Möglichkeit Inhalte in eine Tabelle hinzuzufügen, allerdings stehe ich auf den Schlauch. Ich benötige auch garnet die Abfrage, ob die Zelle 10000 bereits erreicht ist.

Könnte mir jemand kurz unter die Arme greifen?

Besten Dank! :)
Hallo,

Code:
ElseIf Application.CountIf(Columns(2), Label28.Caption) Then

Gruß Uwe
Hallo Uwe,

ich habe das hinzufügen etwas vereinfacht und deinen Code mit eingebunden. Besten Dank dafür. Hat prima geklappt

newRow = Sheets("Freigaben").Cells(Rows.Count, 1).End(xlUp).Row + 1

      With Sheets("Freigaben")
      If Application.CountIf(Columns(2), Label28.Caption) Then
      MsgBox "Bereits vorhanden"
      Else
        .Cells(newRow, "A") = newRow - 2
        .Cells(newRow, "B") = Label28.Caption
        End If
      End With

Hallo Uwe,

ich habe noch eine weitere Frage. 

Wie erhalte ich die Zeilen Nummer in der der Inhalt bereits enthalten ist?

If Application.CountIf(Columns(2), Label28.Caption)

lässt sich da irgendwo die Zeilennummer speichern?

Besten Dank! :)
Hallöchen,

der Code stellt ja einfach nur per Zählung fest, ob etwas vorhanden ist.
Wenn Du eine Zeilennummer willst, dann müsstest Du nach dem Begriff suchen - z.B. mit Find, das kann man aufzeichnen, wird aber etwas komplexer, oder man nimmt VERGLEICH. Hier mal zum probieren. Trage in Spalte A irgendwo Willi ein und hier ist der code, der Dir die Zeilennummer bringt:

Sub test()
MsgBox WorksheetFunction.Match("Willi", Columns(1))
End Sub