Bei Übereinstimmung ersetzen, sonst neue Zeile
24.11.2015 23:59:23
A.G.
vorab eine kurze Info über mich.
Ich habe eigentlich keine große Ahnung von VBA. Alle funktionierenden Markos meiner Tabelle habe ich mir in mühsamer Arbeit zusammengepfuscht. ^^
Habt Nachsicht mit mir.
Zu meine Problem
Ich habe eine UserForm in der ich Aufträge eingebe. Diese UserForm hat eigentlich an die 140 TextBoxen aber für die Problembeschreibung kürze ich das ganze erstmal auf eine TextBox.
Das eingeben, abspeichern und auch wieder aufrufen der Aufträge funktioniert soweit einwandfrei.
Was ich aber bräuchte und was ich nicht zum laufen kriege, ist das überschreiben bereits vorhandener Aufträge in Verbindung mit einer Abfrage.
Einige Eckdaten:
Arbeitsblatt = "Lieferungen"
Gesuchter Wert "Auftragsnummer" ist eine Zehnstellige Zahl und befindet sich auf dem Arbeitsblatt "Lieferungen" in Spalte B untereinander. In der UserForm wird die Auftragsnummer in der TextBox "txtAuftragsnummer" eingegeben.
Ziel:
Wenn ich einen Auftrag eingebe und speichern will, soll ein Marko die vorhandenen Aufträge durchsuchen ob die Auftragsnummer in Spalte B bereits vergeben ist.
Wenn KEINE Übereinstimmung = Neuen Auftrag in der untersten leeren Zeile anlegen.
Wenn Übereinstimmung = MsgBox "Auftrag bereits vorhanden! Überschreiben JA/NEIN?
JA = Werte überschreiben
NEIN = Nichts tun
Habe bereits einen Code zusammengeschustert, aber wenn ich absichtlich eine bereits vorhandene Auftragsnummer eingebe vergleicht er diese erst gar nicht und legt in der untersten Zeile einen Auftrag mit der selben Auftragsnummer an.
Private Sub cmbÜbernehmen_Click()
Dim Index As Long
With Sheets("Lieferungen").Activate
For Index = 4 To ActiveSheet.UsedRange.Rows.Count + 1
If InStr(LCase(ActiveSheet.Cells(Index, 2).Value), LCase(usfErfassung.txtAuftragsnummer.Value)) 0 Then GoTo Abfrage Else GoTo NeuerAuftrag
Next
Abfrage:
If MsgBox("Übereinstimmung gefunden", vbYesNo + vbQuestion, _
"Auftrag überschreiben?") = vbYes Then GoTo Überschreiben Else GoTo EndeMakro
Überschreiben:
With ActiveSheet
'Lieferantendaten
.Cells(i, 2).Value = usfErfassung.txtAuftragsnummer.Value
EndeMakro:
Exit Sub
NeuerAuftrag:
Dim intErsteLeereZeile As Long
With ActiveSheet
intErsteLeereZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 0
.Cells(intErsteLeereZeile, 2).Value = usfErfassung.txtAuftragsnummer.Value
Wo ist der Fehler?