Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

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 NothingThen
            
            '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"