abuelito
Goto Top

Excel VBA UserForm1 - Problem bei der Überprüfung der Daten vor der Übernahme in die Tabelle1

Hallo an Alle,

so langsam verzweifle ich an diesem Projekt face-sad Bisher habt ihr mir sehr geholfen und ich hoffe, diesmal auch.

Folgender Ablauf:

Es existiert eine UserForm1. In dieser UF1 habe ich 47 Textboxen, die mit Werten gefüllt werden. Um die Werte in die Tabelle1 zu übernehmen bzw. zu übetrgane, existiert ein CommandButton1. Mit diesem CB1 werden alle Daten in die dazugehörigen Spalten übernommen und zwar in die nächstmöglich beschreibbare Zeile (ab Zeile 5).

Jetzt mein Problem:

Bevor die Daten an die Tabelle1 übergeben werden, soll folgende Prüfung stattfinden:

1. Existiert der Wert aus der TextBox15 bereits in der Spalte "Q"? Dazu muss Zeile für Zeile überprüft werden.
2. Wenn nicht, dann alle Daten aus allen Textboxen in Tabelle1 übertragen und zwar in die nächstmöglich beschreibbare Zeile (ab Zeile 5).
3. Wenn doch, dann soll eine Msg-Box aufgehen mit dem Hinweis "Wert xyz bereits vorhanden. Trotzdem weiter?" + einem "Ja" und einem "Nein" Button.
4. Bei "Nein" soll der Mauszeiger in der TextBox15 landen.
5. Bei "Ja" sollen alle Daten aus allen Textboxen in Tabelle1 übertragen werden und zwar in die nächstmöglich beschreibbare Zeile (ab Zeile 5).

Vielen Dank für eure Hilfe.

Grüße


Anbei mein NICHT funktionierender Code face-sad

'  
'   übernehmen (PASST NICHT!)  
'  

Private Sub CommandButton1_Click()

Dim lLetzte  As Double
Dim iIndex   As Integer
Dim ws As Worksheet
Dim var As Variant

Set ws = Worksheets("Tabelle1")  

' Überprüft werden soll jede Zeile, ob der Wert aus der TextBox15 in der Spalte "Q" bereits existiert,   
'	wenn nicht, dann sollen alle Einträge aus allen TextBoxen in die letzte Zeile (also die nächste, die leer ist!) der Tabelle1 übernommen werden,  
'	wenn doch, dann soll eine Msg-Box aufgehen mit folgendem Hinweis "bereits vorhanden .. trotzdem weitermachen?"  
'	Bei vbNo soll der Mauszeiger in der TextBox15 landen, um den Wert überschreiben zu können  
'	Bei vbYes sollen alle Einträge aus allen TextBoxen in die letzte Zeile (also die nächste, die leer ist!) der Tabelle1 übernommen werden  

var = Application.Match(TextBox15.Text, ws.Columns(17), 0)

    If IsError(var) Then
        ActiveWorkbook.ActiveSheet.Range("Q" & lLetzte).Value = TextBox15.Value  
        ElseIf MsgBox("Depotnummer """ & TextBox15.Value & """  bereits vorhanden. Trortzdem weitermachen?", _  
            vbYesNo + vbQuestion, "    Doppelter Eintrag wurde erkannt!") = vbNo Then  
        TextBox15.SetFocus
        Exit Sub
    End Iff

Application.ScreenUpdating = False

   With Worksheets("Tabelle1")  
      .Unprotect Password:="Geheim"  
      lLetzte = IIf(.Range("A65536") <> "", 65536, .Range("A65536").End(xlUp).Row) + 1  
      If lLetzte < 5 Then lLetzte = 5

' Hier exsitieren noch weitere TextBoxen  
.Range("Q" & lLetzte).Value = TextBox15.Value  
' Und hier existieren noch weitere TextBoxen  

.Protect Password:="Geheim"  
   End With
   
   For iIndex = 1 To 47                                                             ' Anzahl Textboxen  
      With Controls("TextBox" & iIndex)  
         .Value = ""  
      End With
   Next iIndex
   
   Application.ScreenUpdating = True

         
End Sub

Content-ID: 342122

Url: https://administrator.de/contentid/342122

Ausgedruckt am: 15.11.2024 um 23:11 Uhr