VBA | Verhindern doppelter Werte in einer Spalte?

5 Antworten

Mit dieser Funktion kannst du abfragen, ob ein Wort schon in einem Bereich existiert:

Public Function WortInBereich(bereich As Range, wort As String) As Boolean
Dim zelle As Variant
Dim ergebnis As Boolean

ergebnis = False

For Each zelle In bereich
    If zelle.Value = wort Then
        ergebnis = True
        Exit For
    End If
Next zelle
WortInBereich = ergebnis
End Function

Funktioniert sowohl in VBA, als auch auf dem Tabellenblatt.

Devo23 
Fragesteller
 29.09.2021, 06:46

Dankeschön!
Aber wie kann ich den Bereich bestimmen bzw exit sub einleiten?

0
daCypher  29.09.2021, 08:06
@Devo23

In einer anderen Antwort hast du geschrieben, dass du im Bereich "D6:D15" nach dem Wort "D3FST" suchen willst. Du könntest also einfach das machen:

If WortInBereich(ActiveSheet.Range("D6:D15"), "D3FST") Then
    MsgBox "Der Wert D3FST ist bereits vorhanden"
Else
    ' Tu irgendwas. Z.B. Den Wert in den Bereich schreiben, 
    ' oder was auch immer passieren soll
End If
0

Was ist der doppelte Index einer Spalte?

Spalte C hat den Index 3, da das der 3. Buchstabe im Alphabet ist. Meinst du das?

Auf zum Beispiel Zelle D5 greifst du so zu: Cells(5,4)

ob der Eintrag sicher betätigt

Habe ich nicht verstanden. Wenn der Eintrag da schon steht, muss er nicht extra bestägit werden.(?)

Devo23 
Fragesteller
 28.09.2021, 14:10

z.B habe ich die Spalte D6:D15,

ich möchte bei einer Wortwiederholung wie "D3FST" ein Auftauchen der MsgBox.

ooooder: Eine ständige Abfrage ob das Wort in den Spalten schon vorhanden ist.

0

Bevor Du das stundenlang suchst, würde ich es "zu Fuss" machen:

Weise beide Spalteninhalte einer Variable zu (am besten vielleicht variant) und vergleiche die beiden. Setze eine Boolean Variable oben auf false und danach allenfalls auf true.

Danach eine if-then Schleife für die Box.

Die Box kannst Du öffnen? Die Paramenter, die zu übergeben sind, sind etwas trickreich. Doch das Internet listet sie in vielen Quellen.

Könnte so aussehen (Syntax nicht geprüft):

gleich = false

Var 1 = Zelle A2

Var 2 = Zelle A3

If Var 1 == Var 2 then gleich = true

if gleich then Messagebox

gleich = false

(das natürlich via Interationsschleife und nicht wie im Beispiel nur für einen Fall)

Woher ich das weiß:Berufserfahrung – ich arbeite schon sehr lange im EDV Bereich, viele Sparten

Du kannst in VBA ganz normal die Excelfunktionen nutzen. ZÄHLENWENN heißt beispielsweise WorksheetFunctions.CountIf.

Woher ich das weiß:Berufserfahrung – Programmierer

Du könntest z.B. mit einer schleifen jede Zeile durchlaufen und bei jeder Zeile prüfen, ob der Index schon mal vorkam.