Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
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

Doppelte Werte UserForm

Doppelte Werte UserForm
21.11.2021 07:11:06
Marcel
Hallo, ich verzweifle gerade an einer Methode in VBA.
Ich habe ein Voting erstellt, welches über eine UserForm in Tabelle 1 (2 Eingabemöglichkeiten: Vor- und Zuname) die Eingaben in Tabelle 2 Speichert.

Private Sub Button_Voten_Click()
'Erste Zeile finden
last = Tabelle2.Cells(Rows.Count, 4).End(xlUp).Row + 1
'Vorname
Tabelle2.Cells(last, 2).Value = TextBox_Vorname
'Name
Tabelle2.Cells(last, 3).Value = TextBox_Nachname
'Windows Kennung
Tabelle2.Cells(last, 4).Value = Application.UserName
'Datum
Tabelle2.Cells(last, 5).Value = Format(Now, "DD.MM.YYYY  HH:MM:SS")
Unload Me
MsgBox ("Danke fürs Voten, die Datei schließt jetzt von alleine!")
ActiveWorkbook.Close Savechanges:=True
End Sub
Nun möchte ich verhindern, dass eine Person zwei mal Voten kann, bzw. die letzte abgegebene Stimme zählt.
Dazu habe ich folgenden Code versucht, welcher jedoch nicht funktioniert.

Private Sub Button_Voten_Click()
'Erste Zeile finden
last = Tabelle2.Cells(Rows.Count, 4).End(xlUp).Row + 1
Dim Wert As Long
Dim Zelle As Range
Dim Bereich As Range
Dim last1 As Integer
Set Bereich = Tabelle2.Range("D3:D35")
With Tabelle2
Wert = Range("A1").Value
For Each Zelle In Bereich
If Zelle.Value = Wert Then
last = Zelle.Row
End If
Next
End With
Darum bin ich nun auf euer Fachwissen angewiesen. Kann mir jemand helfen?
Vielen Dank!

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Werte UserForm
21.11.2021 08:54:03
Oberschlumpf
Hi Marcel
zeig bitte mal per Upload eine Bsp-Datei mit Bsp-Daten mit Code mit Userform.
Ciao
Thorsten
AW: Doppelte Werte UserForm
21.11.2021 09:16:03
volti
Hallo Marcel,
hier eine Idee dazu:
Code:

[Cc][+][-]

Option Explicit Option Compare Text Private Sub Button_Voten_Click() Dim sName As String, sMsgTxt As String Dim Zelle As Range Dim iLast As Long With Tabelle2 ' Erste Zeile finden iLast = .Cells(.Rows.Count, 4).End(xlUp).Row + 1 ' Feststellen, ob schon gevotet wurde For Each Zelle In .Range("A1:A" & (iLast - 1)) If Zelle.Value Like textbox_Vorname And _ Zelle.Offset(0, 1).Value Like textbox_Nachname Then iLast = Zelle.Row sMsgTxt = "Dein Voting wurde angepasst" Exit For End If Next Zelle ' Vorname .Cells(iLast, 2).Value = textbox_Vorname ' Name .Cells(iLast, 3).Value = textbox_Nachname ' Windows Kennung .Cells(iLast, 4).Value = Application.UserName ' Datum .Cells(iLast, 5).Value = Format(Now, "DD.MM.YYYY HH:MM:SS") End With Unload Me MsgBox (sMsgTxt & ", die Datei schließt jetzt von alleine!"), vbInformation, "Voting" ActiveWorkbook.Close Savechanges:=True End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Doppelte Werte UserForm
21.11.2021 09:25:42
volti
Hallo,
Update, jetzt auch getestet.
Code:

[Cc][+][-]

Private Sub Button_Voten_Click() Dim sName As String, sMsgTxt As String Dim Zelle As Range Dim iLast As Long With Tabelle2 ' Erste Zeile finden iLast = .Cells(.Rows.Count, 4).End(xlUp).Row + 1 sMsgTxt = "Danke fürs Voten" ' Feststellen, ob schon gevotet wurde For Each Zelle In .Range("B1:B" & (iLast - 1)) If Zelle.Value Like TextBox_Vorname And _ Zelle.Offset(0, 1).Value Like TextBox_Nachname Then iLast = Zelle.Row sMsgTxt = "Dein Voting wurde angepasst" Exit For End If Next Zelle ' Vorname .Cells(iLast, 2).Value = TextBox_Vorname ' Name .Cells(iLast, 3).Value = TextBox_Nachname ' Windows Kennung .Cells(iLast, 4).Value = Application.UserName ' Datum .Cells(iLast, 5).Value = Format(Now, "DD.MM.YYYY HH:MM:SS") End With Unload Me MsgBox (sMsgTxt & ", die Datei schließt jetzt von alleine!"), vbInformation, "Voting" ActiveWorkbook.Close Savechanges:=True End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Doppelte Werte UserForm
21.11.2021 09:40:38
Marcel
Hallo Karl-Heinz,
Danke für deine schnelle Antwort.
Eine Info zu meiner Tabelle:
1. in Tabelle2.A1 habe ich den Application.UserName abgespeichert zum Vergleich (ich denke dass kann man anders lösen, habe mich damit ausprobiert)
2. in der Tabelle 2 werden die Vornamen und Nachnamen abgespeichert mit der Kennung und dem Datum
bisher habe ich die doppelten Daten immer manuell mit der neuesten Eintragung einer Person ersetzt.
Mein Ziel war es also zu vergleichen ob die Application.UserName identisch ist mit einem Inhalt in der Spalte "D",
und wenn die der Fall ist die eintragung in der selben Zeile vorzunehmen und nicht ganz unten drunter.
Hoffe das war verständlich?
Grüße, Marcel
Anzeige
AW: Doppelte Werte UserForm
21.11.2021 10:09:55
volti
Hallo Marcel,
wenn Du lieber den Usernamen als Suchkriterium nehmen möchtest, wird es noch etwas kürzer.
Hier eine Idee dazu, wobei ich den Usernamen mal aus der Windows-Umgebung genommen habe.
Teste mal, ob's passt....
Code:

[Cc][+][-]

Private Sub Button_Voten_Click() Dim sName As String, sMsgTxt As String Dim vLast As Variant If TextBox_Vorname = "" Or TextBox_Nachname = "" Then MsgBox "Bitte vollständigen Namen eingeben!", vbCritical, "Voting" Exit Sub End If With Tabelle2 ' Windows-Username sName = Environ$("Username") ' Feststellen, ob schon gevotet wurde vLast = Application.Match(sName, .Columns(4), 0) If Not IsError(vLast) Then sMsgTxt = "Dein Voting wurde angepasst" Else vLast = .Cells(.Rows.Count, 4).End(xlUp).Row + 1 sMsgTxt = "Danke fürs Voten" End If ' Vorname .Cells(vLast, 2).Value = TextBox_Vorname ' Name .Cells(vLast, 3).Value = TextBox_Nachname ' Windows Kennung .Cells(vLast, 4).Value = sName ' Datum .Cells(vLast, 5).Value = Format(Now, "DD.MM.YYYY HH:MM:SS") End With Unload Me MsgBox (sMsgTxt & ", die Datei schließt jetzt von alleine!"), vbInformation, "Voting" ActiveWorkbook.Close Savechanges:=True End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Doppelte Werte UserForm
21.11.2021 11:06:30
Marcel
Habe den Code mal Kopiert und eingefügt.
Bei mir wird jedoch bei gleicher Kennung nicht überschreiben sondern unten drunter weiter geschrieben.
Funktioniert das bei dir richtig oder ist meine Excel Version nicht die richtige für den Code?
Gruß, Marcel
AW: Doppelte Werte UserForm
21.11.2021 11:30:27
Oberschlumpf
Zitat "...oder ist meine Excel Version nicht die richtige für den Code?
mein 1. Gedanke = "hmpffff..grrrr"
Gegenfrage: und bitte welches ist deine Version? als Angabe dazu von dir hab ich bisher nur "Ohne Relevanz" gefunden :-/
AW: Doppelte Werte UserForm
21.11.2021 11:55:52
Marcel
Meine Version ist von 2016.
Für den Gedanken muss ich mich dann wohl entschuldigen!
Anzeige
AW: Doppelte Werte UserForm
21.11.2021 11:38:07
volti
Hallo Marcel,
läuft einwandfrei, ansonsten schließe ich mich der Aussage von Torsten an...
Allerdings weiß ich nicht, wie eure Kennungen aussehen.
Deine Datei
Gruß
KH
AW: Doppelte Werte UserForm
21.11.2021 12:01:57
Marcel
Die Kennungen sind nach deiner Änderung eine achtstellige Zahl und mit meiner Nachname, Vorname (Zugehörigkeit)
AW: Doppelte Werte UserForm
21.11.2021 12:22:23
volti
Naja,
wenn die Windows-Kennung eine Zahl ist, könnte es Probleme geben, wenn Du die Spalte als Standard formatiert hast.
Ggf. dies ändern (Erzwingung Text):
' Windows Kennung
.Cells(vLast, 4).Value = "'" & sName
Oder Du nimmst doch wieder Application.Username....
Wenn nix geht, kannst Du auch wieder eine Schleife verwenden, wie schon früher gezeigt.
Dann aber nicht Vor-/Nachname (Or-Funktion) abfragen sondern nur das Kennungsfeld.
Gruß
KH
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige