Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Meldung, wenn Wert doppelt

Meldung, wenn Wert doppelt
13.06.2005 16:41:44
Wolfgang
Hallo*
wenn ich den untenstehenden Code, den ich unter Recherche entdeckt habe, richtig deute, dient er dazu, Daten in ein Arbeitsblatt mit Namen "Mitglieder Aktuell" zu kopieren und eine MsgBox aufzumachen, wenn der Eintrag in Spalte C bereits vorkommt. Weiterhin soll sich Excel melden, wenn die Zeile 145 erreicht ist.
Wie wäre der Code umzustellen, wenn er sich auf jedes mögliche, also eigentlich auf das jeweils aktive Tabellenblatt (ohne fest zugewiesenen Namen) einer Arbeitsmappe beziehen soll ?
Ich wäre für eine Hilfestellung sehr dankbar.
Gruß Wolfgang Berger
Hier der Code:

Sub Stammdaten_kopieren()
Dim Loletzte As Long
Dim rng As Range
With Sheets("Mitglieder Aktuell")
Set rng = .Range("C1:C145").Find(What:=Selection, _
LookIn:=xlValues, LookAt:=xlWhole)
If Not rng Is Nothing Then
MsgBox "Eintrag schon vorhanden!", vbExclamation
Exit Sub
Else
If .Range("C145") = "" Then
Loletzte = .Range("C145").End(xlUp).Row
Selection.Copy Destination:=.Cells(Loletzte + 1, 3)
Else
MsgBox "keine Zelle mehr frei"
End If
End If
End With
Sheets("Mitglieder Aktuell").Select
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Meldung, wenn Wert doppelt
13.06.2005 18:01:42
Ralf
Hi Wolfgang,
hier der Code für das jeweils aktuelle Blatt:

Sub Stammdaten_kopieren()
Dim Loletzte As Long
Dim rng As Range
Dim AktBl$
AktBl = ActiveSheet.Name
With Sheets(AktBl)
Set rng = .Range("C1:C145").Find(What:=Selection, _
LookIn:=xlValues, LookAt:=xlWhole)
If Not rng Is Nothing Then
MsgBox "Eintrag schon vorhanden!", vbExclamation
Exit Sub
Else
If .Range("C145") = "" Then
Loletzte = .Range("C145").End(xlUp).Row
Selection.Copy Destination:=.Cells(Loletzte + 1, 3)
Else
MsgBox "keine Zelle mehr frei"
End If
End If
End With
Sheets(AktBl).Select
End Sub

Ciao, Ralf
Anzeige
AW: Meldung, wenn Wert doppelt
13.06.2005 21:26:54
Wolfgang
Hallo Ralf,
absolut recht herzlichen Dank für Deine schnelle Rückantwort und Unterstützung. Ich werde morgen den Code "einbauen" und Dir dann auf jeden Fall noch eine Rückmeldung geben und über das Ergebnis berichten. In dem Sinne nochmals recht herzlichen Dank und bis morgen.
Gruß - Wolfgang
Anzeige
AW: Meldung, wenn Wert doppelt
14.06.2005 07:30:51
Wolfgang
Hallo Ralf,
ich hatte ja versprochen, mich heute noch kurz wieder zu melden. Habe soeben den geänderten Code eingebaut und getestet. Irgendwie kommt zwar eine Meldung, es scheint aber so zu sein, dass ich das Macro immer wieder neu starten muß (?) und vermutlich keine permanente Überwachung der Seite erfolgt (?); Vielleicht habe ich ja auch noch irgendetwas falsch gemacht. Ich werde somit auf jeden Fall noch weiter testen und mich noch wieder erneut melden. - Danke nochmals recht herzlich für Deine Rückmeldung und Unterstützung.
Gruß - Wolfgang Berger
Anzeige
AW: Meldung, wenn Wert doppelt
14.06.2005 12:07:05
Ralf
Hi Wolfgang,
es wundert mich nicht, daß Du das Makro immer wieder neu starten mußt. Um eine permanente Überprüfung auslösen zu können muß der Code z.Bsp. im Ereignis 'SheetSelectionChange' der Arbeitsmappe aufgerufen werden. Bsp.:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Stammdaten_kopieren
End Sub

Das hat zwar (momentan noch, unter den gegebenen Umständen) den Nachteil, daß bei jedem Zellwechsel die Meldung kommt, kann aber angepasst werden. Wenn Du möchtest, kannst Du mir ja mal die Tabelle mit einer detailierten Beschreibung der Aufgabe schicken.
Ciao, Ralf
Anzeige
AW: Meldung, wenn Wert doppelt
16.06.2005 19:51:31
Wolfgang
Hallo Ralf,
ich war leider in den letzten Tagen außer Gefecht gesetzt (Grippe/Erkältung) und kann mich daher erst jetzt wieder melden. Dein Angebot, Dir die Arbeitsmappe anzusehen, finde absolut toll, da mir hierzu jegliche weitere Kenntnis fehlen würde. Ich werde also alsbald die Mappe aufbereiten und mich wieder melden. (Wahrscheinlich Morgen). In dem Sinne nochmals recht herzlichen Dank!
Gruß - Wolfgang Berger
Anzeige
AW: Meldung, wenn Wert doppelt
16.06.2005 21:32:43
Wolfgang
Hallo Ralf,
ich habe es doch noch geschafft, die Beispielsmappe heute aufzubereiten und darin mein Problem zu beschreiben. Nochmals schon jetzt recht herzlichen Dank für Deine freundliche Mithilfe und Dein Angebot.
Gruß - Wolfgang Berger
https://www.herber.de/bbs/user/23937.xls
Anzeige
AW: Meldung, wenn Wert doppelt
17.06.2005 16:36:38
Ralf
Hi Wolfgang,
unter
https://www.herber.de/bbs/user/23971.xls
kannst Du Dir meine Lösung herunterladen. Ich hoffe, sie entspricht Deinen Vorstellungen.
Ciao, Ralf
AW: Meldung, wenn Wert doppelt
17.06.2005 17:05:06
Ralf
Sorry Wolfgang,
Du wirst beim Start der Mappe eine Fehlermeldung bekommen. Grund ist ein fehlendes Schlüsselwort. Bitte ergänze im Modul 'Allgemein' die Zeile
Sub Einlesen(Zeile As Double) mit dem Wort 'Optional' vor 'Zeile as Double'.
Richtig muß es so aussehen:
Sub Einlesen(Optional Zeile As Double)
Danke!
Ciao, Ralf
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Meldung bei doppelten Werten in Excel


Schritt-für-Schritt-Anleitung

Um eine Meldung zu erhalten, wenn ein Wert in Excel doppelt eingetragen wird, kannst Du den folgenden VBA-Code verwenden. Dieser Code überprüft das aktive Arbeitsblatt, ob der Wert in Spalte C bereits vorhanden ist.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul ein: Rechtsklick auf "VBAProject (DeinDateiname)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Sub Stammdaten_kopieren()
    Dim Loletzte As Long
    Dim rng As Range
    Dim AktBl As String
    AktBl = ActiveSheet.Name
    With Sheets(AktBl)
        Set rng = .Range("C1:C145").Find(What:=Selection, _
        LookIn:=xlValues, LookAt:=xlWhole)
        If Not rng Is Nothing Then
            MsgBox "Eintrag schon vorhanden!", vbExclamation
            Exit Sub
        Else
            If .Range("C145") = "" Then
                Loletzte = .Range("C145").End(xlUp).Row
                Selection.Copy Destination:=.Cells(Loletzte + 1, 3)
            Else
                MsgBox "keine Zelle mehr frei"
            End If
        End If
    End With
    Sheets(AktBl).Select
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Wähle den Wert, den Du eingeben möchtest, und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: "Eintrag schon vorhanden!"

    • Dieser Fehler tritt auf, wenn der Wert, den Du eingeben möchtest, bereits in Spalte C vorhanden ist. Überprüfe die Werte in Spalte C.
  • Fehler: "keine Zelle mehr frei"

    • Dies bedeutet, dass die Zelle C145 bereits belegt ist. Du kannst entweder die Zellen in Spalte C bereinigen oder den Code anpassen, um mehr Zeilen zu berücksichtigen.
  • Makro muss manuell gestartet werden

    • Um das Makro automatisch bei jedem Zellwechsel auszuführen, füge den folgenden Code in das "ThisWorkbook"-Modul ein:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Stammdaten_kopieren
End Sub

Alternative Methoden

Eine Alternative zu VBA ist die Verwendung von bedingter Formatierung, um doppelte Werte visuell hervorzuheben:

  1. Wähle die Spalte C aus.
  2. Gehe zu "Start" > "Bedingte Formatierung" > "Regeln zum Hervorheben von Zellen" > "Doppelte Werte".
  3. Wähle eine Formatierung aus und klicke auf "OK".

Diese Methode gibt dir eine visuelle Rückmeldung, ohne dass ein Makro erforderlich ist.


Praktische Beispiele

Angenommen, Du hast eine Liste von Mitgliedern in Spalte C, und möchtest sicherstellen, dass keine doppelten Namen eingetragen werden. Mit dem oben angegebenen VBA-Code kannst Du schnell prüfen, ob der Name bereits vorhanden ist, bevor Du ihn hinzufügst.

Wenn Du das Makro ausführst, während Du einen Namen in die aktive Zelle eingibst, wird eine Meldung angezeigt, wenn der Name bereits existiert.


Tipps für Profis

  • Fehlerbehandlung implementieren: Füge Fehlerbehandlungsroutinen hinzu, um das Makro robuster zu machen.
On Error Resume Next
  • Erweiterung des Codes: Du kannst den Code anpassen, um nicht nur auf Spalte C, sondern auf andere Spalten zu prüfen, indem Du den Bereich in .Range("C1:C145") änderst.

  • Verwendung von Variablen: Verwende Variablen für die Bereiche und Werte, um den Code flexibler und leichter anpassbar zu machen.


FAQ: Häufige Fragen

1. Wie kann ich das Makro automatisch beim Öffnen der Datei ausführen? Du kannst das Makro im "Workbook_Open"-Ereignis platzieren:

Private Sub Workbook_Open()
    Stammdaten_kopieren
End Sub

2. Funktioniert der Code in allen Excel-Versionen? Ja, der Code sollte in allen aktuellen Excel-Versionen funktionieren, die VBA unterstützen, einschließlich Excel 2016, 2019 und Microsoft 365.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige