Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1880to1884
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel/VBA duplikaten Prüfung

Excel/VBA duplikaten Prüfung
20.04.2022 15:46:02
Nilaa92
Hallo VBA-Profis,
so sieht mein Projekt aus:
Userbild
In der Eingabemaske der Userform seht ihr Daten die ich bereits eingegeben und mit "Anmelden" bestätigt habe, weshalb die Daten Links in die Tabelle eingetragen wurden. Dafür folgender Code bei Bestätigen des Buttons "Anmelden":

Private Sub Button_Anmelden_Click()
'Einträge der Schaltfläche Anmelden in die Arbeitsmappe übernehmen
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(last, 1).Value = CDate(Date)
ActiveSheet.Cells(last, 2).Value = Time
ActiveSheet.Cells(last, 3).Value = mdeErfassung.Text_MDE.Value
ActiveSheet.Cells(last, 5).Value = mdeErfassung.Text_Mitarbeiter.Value
ActiveSheet.Cells(last, 7).Value = "Angemeldet"
End Sub
Hier der Code für den Button "Abmelden":

Private Sub Button_Anmelden_Click()
'Einträge der Schaltfläche Anmelden in die Arbeitsmappe übernehmen
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(last, 1).Value = CDate(Date)
ActiveSheet.Cells(last, 2).Value = Time
ActiveSheet.Cells(last, 3).Value = mdeErfassung.Text_MDE.Value
ActiveSheet.Cells(last, 5).Value = mdeErfassung.Text_Mitarbeiter.Value
ActiveSheet.Cells(last, 7).Value = "Abgemeldet"
End Sub
Nun möchte ich aber, dass wenn ich jetzt mit den gleichen Daten erneut auf Anmelden klicke mir die Meldung gezeigt wird, "Achtung, MDE bereits angemeldet". Erst wenn ich mich zuvor abgemeldet hätte mit dem Button "Abmelden" sollen die Daten in die Tabelle übernommen werden. Andersherum soll das auch für "Abmelden" funktionieren. Wenn ich mich abmelden möchte, obwohl der letzte Eintrag zu diesen Daten bereits Abgemeldet ist, soll die Meldung "Achtung, MDE bereits abgemeldet" angezeigt werden.
Ich möchte also nicht das ich mich 2+ mal mit dem gleichen Gerät (MDE Barcode) anmelden kann. Es muss sich zuvor abgemeldet werden.
Eventuell lässt sich das An- und Abmelden nur über ein Button steuern, das wäre natürlich sehr geil!
Liebe Grüße
Nico

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bitte Datei
20.04.2022 15:48:28
UweD
hochladen
AW: Bitte Datei
20.04.2022 15:58:57
UweD
Hallo
es reicht eine Musterdatei, mit wenig Daten (und anonymisiert)
Es muss halt nur funktionsfähig bleiben und das Problem abdecken.
LG UweD
AW: Bitte Datei
20.04.2022 16:00:13
Nilaa92
Okay, reicht den der Upload Link jetzt dafür? Wüsste gerade nicht wie ich das sonst machen kann..
AW: Excel/VBA duplikaten Prüfung
20.04.2022 17:29:46
peterk
Hallo
Ich hab den Status in der "MDE Liste" gespeichert und die Buttons einfach disabled.
In Modul 1:

Sub ErfassunStarten()
mdeErfassung.Button_Anmelden.Enabled = False
mdeErfassung.Button_Abmelden.Enabled = False
mdeErfassung.Show
End Sub
In Forumulare:

Private Sub Button_Abmelden_Click()
'Einträge der Schaltfläche Abmelden in die Arbeitsmappe übernehmen
Dim last As Integer
Dim MdeNr As Long
MdeNr = CDbl(mdeErfassung.Text_MDE.Value)
Worksheets("MDE Liste").Cells(MdeNr, 3) = ""
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(last, 1).Value = CDate(Date)
ActiveSheet.Cells(last, 2).Value = Time
ActiveSheet.Cells(last, 3).Value = mdeErfassung.Text_MDE.Value
ActiveSheet.Cells(last, 5).Value = mdeErfassung.Text_Mitarbeiter.Value
ActiveSheet.Cells(last, 7).Value = "Abgemeldet"
mdeErfassung.Text_MDE.Value = ""
mdeErfassung.Text_Mitarbeiter.Value = ""
mdeErfassung.Button_Anmelden.Enabled = False
mdeErfassung.Button_Abmelden.Enabled = False
End Sub
Private Sub Button_Cancel_Click()
'Eingabefenster schließen
Unload mdeErfassung
End Sub
Private Sub Button_Anmelden_Click()
'Einträge der Schaltfläche Anmelden in die Arbeitsmappe übernehmen
Dim last As Integer
Dim MdeNr As Long
MdeNr = CDbl(mdeErfassung.Text_MDE.Value)
Worksheets("MDE Liste").Cells(MdeNr, 3) = "1"
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(last, 1).Value = CDate(Date)
ActiveSheet.Cells(last, 2).Value = Time
ActiveSheet.Cells(last, 3).Value = mdeErfassung.Text_MDE.Value
ActiveSheet.Cells(last, 5).Value = mdeErfassung.Text_Mitarbeiter.Value
ActiveSheet.Cells(last, 7).Value = "Angemeldet"
mdeErfassung.Text_MDE.Value = ""
mdeErfassung.Text_Mitarbeiter.Value = ""
mdeErfassung.Button_Anmelden.Enabled = False
mdeErfassung.Button_Abmelden.Enabled = False
End Sub
Private Sub Text_MDE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim MdeNr As Long
If IsNumeric(mdeErfassung.Text_MDE.Value) Then
MdeNr = CDbl(mdeErfassung.Text_MDE.Value)
If Worksheets("MDE Liste").Cells(MdeNr, 3) = "" Then
mdeErfassung.Button_Anmelden.Enabled = True
mdeErfassung.Button_Abmelden.Enabled = False
Else
mdeErfassung.Button_Anmelden.Enabled = False
mdeErfassung.Button_Abmelden.Enabled = True
End If
End If
End Sub
Peter
Anzeige
AW: Excel/VBA duplikaten Prüfung
20.04.2022 21:38:39
Yal
Hallo Nico,
was das Abmelden angeht, ist deine Beschreibung ungenau. Da müsstest Du wieder drüber gehen.
Für das Anmelden, wie folgt:

Private Sub Button_Anmelden_Click()
'Einträge der Schaltfläche Anmelden in die Arbeitsmappe übernehmen
If Vorhandensein_finden(mdeErfassung.Text_MDE.Value) = -1 Then
With ActiveSheet.Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0) = CDate(Date)
.Offset(1, 1) = Time
.Offset(1, 2) = mdeErfassung.Text_MDE.Value
.Offset(1, 4).Value = mdeErfassung.Text_Mitarbeiter.Value
.Offset(1, 6) = "Abgemeldet"
End With
End If
End Sub
Private Function Vorhandensein_finden(Wert As String) As Long
Dim rng As Range
On Error Resume Next
Vorhandensein_finden = -1 'Default-Value
Set rng = ActiveSheet.Columns("C:C").Find(What:=Wert, After:=ActiveCell, _
LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not rng Is Nothing Then Vorhandensein_finden = rng.Row
End Function
VG
Yal
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige