HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
2019
Erfahrungslevel des Fragestellers:
VBA nur mit Recorder
Sabrina
28.04.2026 21:09:25
AW: Code funktioniert nicht @Uwe
Hallo Uwe,

genau so soll es ja auch sein:

"Trage ich jetzt im Blatt "TB01" eine 227 ein kommt MsgBox mit Hinweis dass diese Nummer bereits im Blatt "TB02" vergeben ist und entfernt den Eintrag. Mehr passiert hier nicht, weil dies so programmiert ist. "

Es ist echt zum verrückt werden, denn mit deinem neuen Code, erfolgt keine Abfrage mehr. Ich verstehe es nicht!!!!!!

https://www.herber.de/bbs/user/180634.zip

Ich danke dir.

VG Sabrina

Als Antwort auf diesen Beitrag
Alwin Weisangler
27.04.2026 22:49:19
AW: Code funktioniert nicht @Uwe
Hallo Sabrina,

ich habe zwecks Test MasterDatei (Datei mit den beiden Prozeduren) im Blatt "TB02" 227 eingegeben. Da wird, da dieser Eintrag in der Masterdatei zum ersten mal eingetragen wurde, keine MsgBox gestartet. Grund: in der externen Datei existiert in Spalte C diese Nummer.

Trage ich jetzt im Blatt "TB01" eine 227 ein kommt MsgBox mit Hinweis dass diese Nummer bereits im Blatt "TB02" vergeben ist und entfernt den Eintrag. Mehr passiert hier nicht, weil dies so programmiert ist.

Was du mir bescheibst, kann ich egal was ich hier mache nicht nachvollziehen. Schlicht dies passiert so nicht.
Lade bitte ein Beispiel (beide Dateien in eine Zip packen), nebst eindeutiger Zuordnung in der Fehlerbeschreibung bitte nochmals hier hoch.

So kann ich mir den Vorgang in Ruhe analysieren, wenn es passiert.

vorsorglich hier mal noch die beiden Prozeduren von mir geändert auf frühe übergabe des Target.Value in Variable vTar (das hatte ich im vorherigen Artikel mitgeteilt und damit habe ich eben getestet):


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Wks As Worksheet, Z As Range, tmp, vTar ' vTar für den Fall das Target früh gelesen werden soll
If Not Intersect(Target, Range("A10:A10000")) Is Nothing Then
If Target.Text = "" Then Exit Sub
Application.EnableEvents = False
vTar = Target ' frühes Übergeben des Target.Value
If IsNumeric(Target.Value) Then Target = CDbl(Target.Value)
For Each Wks In Sheets
For Each Z In Wks.Range("A10:A10000").SpecialCells(xlCellTypeConstants)
If Not IsError(Application.Match(Target, Z.Columns(1), 0)) And Z.Parent.Name <> Target.Parent.Name Then
tmp = Split(Right(Z.Address(0, 0, , True), Len(Z.Address(0, 0, , True)) - InStrRev(Z.Address(0, 0, , True), "]")), "!")
MsgBox "Die Lfd. Nr. " & Target & " ist bereits in Zelle: " & vbNewLine & tmp(1) & " " & tmp(0) & " enthalten!", vbExclamation, "A C H T U N G"
Target = ""
Target.Select
Else
If WorksheetFunction.CountIf(Wks.Columns(1), Target) > 1 Then
MsgBox "Die Lfd. Nr. " & Target & " ist bereits in Zelle: " & vbNewLine & Wks.Cells(Application.Match(Target, Wks.Columns(1), 0), 1).Address(0, 0) & " " & Target.Parent.Name & " enthalten!", vbExclamation, "A C H T U N G"
Target = ""
Target.Select
End If
End If
Next
Next
End If
Application.EnableEvents = True
Call AbgleichExtern(vTar) 'für den Fall das Target spät gelesen werden soll dann: Call AbgleichExtern(Target)
End Sub

Sub AbgleichExtern(lfdNr As Variant)
Dim rs As Object, arr, i&, k&, datN
Set rs = CreateObject("ADODB.Recordset")
With rs
.CursorLocation = 3
.CursorType = 3
.Open "SELECT * FROM [" & extSh & "$]", "Provider=Microsoft.ACE.OLEDB.12.0;" & "Extended Properties=""Excel 12.0 xml"";" & "Data Source= " & extMapPath
If (.EOF And .BOF) = False Then
arr = .GetRows
End If
.Close
End With
Set rs = Nothing
For i = LBound(arr, 2) To UBound(arr, 2)
If IsNumeric(arr(2, i)) Then arr(2, i) = CDbl(arr(2, i))
If arr(2, i) = lfdNr Then k = k + 1
Next i
datN = Right(extMapPath, Len(extMapPath) - InStrRev(extMapPath, "\"))
If k = 0 Then MsgBox "Lfd. Nummer " & lfdNr & " ist in Datei: " & datN & "! vorhanden", vbOKOnly, "Fehler!!!"
End Sub



Gruß Uwe


Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.