VBA | Verhindern doppelter Werte in einer Spalte?
Hallo community,
ich suche eine Möglichkeit für eine Abfrage auf den doppelten Index in einer Spalte und ein darauffolgendes Öffnen einer MsgBox, ob der Eintrag sicher betätigt werden soll.
Danke schon mal im Voraus.
Im Internet habe ich nichts richtiges gefunden.
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.
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
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.(?)
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.
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)
Du kannst in VBA ganz normal die Excelfunktionen nutzen. ZÄHLENWENN heißt beispielsweise WorksheetFunctions.CountIf.
Du könntest z.B. mit einer schleifen jede Zeile durchlaufen und bei jeder Zeile prüfen, ob der Index schon mal vorkam.
Dankeschön!
Aber wie kann ich den Bereich bestimmen bzw exit sub einleiten?