1) Zitat: "Hab nur ein paar selbst beigebrachte VBA-Kenntnisse"
2) Zitat: " Die Datei kann ich leider nicht öffentlich hochladen"
3) Fazit: "Hoffnungslos"
Leise weinend angenommen, deine Arbeitsmappe entspricht dem, was du hier von dir gegeben hast.
Dann wird ein User erst in Spalte "B" schreiben, der Zellcursor springt nach rechts und dann wird er
den zweiten Begriff absondern.
Ergo prüfen wir nur auf die Eingabe in "C", sogleich als Change-Ereignis.
Option Explicit
'diesen Code jeweils in das Klassenmodul der Arbeitsmappen
Private Sub Worksheet_Change(ByVal Target As Range)
Modul1.ChkIt Target
End Sub
Option Explicit
'diesen Code in ein neu erstelltes Standardmodul mit Namen Modul1
Sub ChkIt(rngInput As Range)
Const C_NAME As String = "TermineTransporter"
On Error GoTo iError
If rngInput = "" Then Exit Sub
If rngInput.Count > 1 Then Err.Raise 513
With Sheets(Replace(C_NAME, rngInput.Parent.Name, ""))
If .UsedRange.Cells.Count < 2 Then Err.Raise 514
If Intersect(Columns(3), rngInput) Is Nothing Then Exit Sub
If .Columns(3).Find(rngInput, , -4163, 1).Offset(, -1) = rngInput.Offset(, -1) Then _
Call MsgBox("gefunden" & vbLf & rngInput.Text & vbLf & rngInput.Offset(, -1).Text, vbExclamation + vbOKOnly, .Name)
End With
On Error GoTo 0
iError:
Select Case Err.Number
Case 9
Call MsgBox("keine Überprüfung", vbExclamation + vbOKOnly, "falsche Arbeitsmappe")
Case 513
Call MsgBox("keine Überprüfung", vbExclamation + vbOKOnly, "Mehrfachselektion")
Case 514
Call MsgBox("keine Überprüfung", vbExclamation + vbOKOnly, "ungültiges Arbeitsblatt")
End Select
End Sub
PS: Mir ist sonnenklar, das mein Vorschlag nur bei mir einwandfrei funktioniert, ergo GoTo 3)
|