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 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
so langsam verzweifle ich an diesem Projekt 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
'
' ü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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 342122
Url: https://administrator.de/contentid/342122
Ausgedruckt am: 15.11.2024 um 23:11 Uhr