doppelte Datensätze verhindern
 |
Betrifft: doppelte Datensätze verhindern
von: Mathias
Geschrieben am: 14.09.2004 09:08:38
Hallo liebe Helfer,
ich habe folgendes Problem: Die in eine UserForm eingegebenen Daten sollen in eine Tabelle geschrieben werden, allerdings nur dann, wenn dieser Datensatz (Spalte A) nicht bereits in der Tabelle vorhanden ist.
Bei meinem Code ergibt sich das Problem, dass er die Einfügeoperationen für jede Zelle vornimmt in der er den Datensatz der userform nicht findet (und daher den Datensatz viele male einfügt, statt - wie beabsichtigt - nur einmal.
'zweite leere Zeile in Übersicht-Tabelle ansteuern
'If UserForm1.OptionButton1.Value = True Then
'Sheets("Übersicht").Activate
'Dim zelle As Range
'Sheets("Übersicht").Range("A10:A" & ActiveSheet.UsedRange.Rows.Count).Select
'For Each zelle In Selection
'If InStr(zelle, UserForm1.ComboBox1.Value) 0 Then
'Einfügeoperationen in Übersicht-Tabelle
'Range("A1000").End(xlUp).Offset(2, 0).Select
'With UserForm1
'ActiveCell.Value = .ComboBox1.Value
'ActiveCell.Offset(0, 1) = .TextBox5.Value
'ActiveCell.Offset(0, 8) = .TextBox6.Value
'End With
'Else
'Exit Sub
'Next zelle
'UserForm1.Hide
'End If
'End If
'End Sub
Vielen Dank für die Hilfe
Mathias
 |
Betrifft: AW: doppelte Datensätze verhindern
von: Axel
Geschrieben am: 14.09.2004 16:41:44
Hallo Mathias,
was hältst du von unten stehendem Code. Statt für jede Zelle einen Suchvorgang über Instr() zu initiieren nutze ich die find()-Methode. Habe deinen Ursprungscode zusätzlich noch etwas optimiert. Wo möglich, sollten die Methoden Activate und Select gemieden werden.
Gruß
Axel
Sub x()
Dim lngRowLast As Long
'zweite leere Zeile in Übersicht-Tabelle ansteuern
If UserForm1.OptionButton1.Value = True Then
With Sheets("Übersicht")
lngRowLast = .Range("A1000").End(xlUp).Row
If (.Range("A10:A" & lngRowLast).Find _
(what:=UserForm1.ComboBox1.Value, LookIn:=xlValues, LookAt:=xlPart) Is Nothing) Then
'Einfügeoperationen in Übersicht-Tabelle
With .Cells(lngRowLast + 2, 1)
.Value = UserForm1.ComboBox1.Value
.Offset(0, 1) = UserForm1.TextBox5.Value
.Offset(0, 8) = UserForm1.TextBox6.Value
End With
Else
Exit Sub
UserForm1.Hide
End If
End With
End If
End Sub
Code eingefügt mit
Syntaxhighlighter 2.5
Beiträge aus den Excel-Beispielen zum Thema "doppelte Datensätze verhindern"