Office - Word, Excel und Co. 9.705 Themen, 40.856 Beiträge

Exceltabelle mit Gedächtnis?

sigi_k / 2 Antworten / Flachansicht Nickles

Halle Leute,


ich suche nach einer Idee. Vielleicht kann mir ja Jemand von Euch helfen.


Ich will eine Exceltabelle erstellen,  in der ich immer eine Mitteilung erhalte, wenn ich zwei identische Werte oder Zeichenfolge eingebe. Also wenn  ich in der Zelle B ein Wort schreibe, kommt irgend eine Meldung, dass es schon in Zelle A Zeile 132 vorhanden ist.


Habt Ihr eine Ahnung, wie man das realisieren kann?


Danke an alle, die sich für mich den Kopf zerbrechen
Tschüß

bei Antwort benachrichtigen
Uli M sigi_k „Exceltabelle mit Gedächtnis?“
Optionen

Wenn du dich ein klein wenig mit VBA auskennst, probiere folgende Routine. Kopiere den Code in das Klassenmodul "DieseArbeitsmappe" deiner Datei und teste, ob es deinen Vorstellungen nahe kommt. Er wirkt sich auf alle Blätter aus, wenn eine Änderung in einer Zelle erfolgt. Einige Einschränkungen sind kommentiert, Fehlerbehandlungen nicht implementiert.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Const ksTitel = "Gleicher Wert in anderer Zelle?"
Dim oBlatt As Worksheet
Dim oUsed As Range
Dim V1 As Variant, V2 As Variant
Dim X As Integer, Y As Integer
Dim lRet As Long

' Mehrfach-Änderungen (z.B. durch D&D) unterdrücken:
If Target.Cells.Count > 1 Then Exit Sub
Set oBlatt = ActiveSheet
' nur das aktuelle Blatt wird untersucht:
Set oUsed = oBlatt.UsedRange
V1 = Target.Value
' leeres unterdrücken:
If Len(Trim(V1)) = 0 Then Exit Sub
For Y = 1 To oUsed.Columns.Count
For X = 1 To oUsed.Rows.Count
If Not (X = Target.Row And Y = Target.Column) Then
V2 = oUsed.Cells(X, Y).Value
' es wird nur exakte Übereinstimmung ausgewertet, _
event. mehrere Vorkommen bleiben unberücksichtigt
If V2 = V1 Then GoTo mSchonDa
End If
Next X
Next Y
Exit Sub

mSchonDa:
lRet = MsgBox("Der Wert " & vbCr & vbTab & V1 & vbCr _
& "ist bereits in Zelle " & oUsed.Cells(X, Y).Address & "enthalten!" _
& vbCr & vbCr & "Beide markieren?", _
vbYesNo, ksTitel)
If lRet = vbYes Then Union(oUsed.Cells(X, Y), Target).Select
End Sub


bei Antwort benachrichtigen