Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Prüfung ob Eintrag schon vorhanden, Einträge bearbeiten

Forumthread: VBA Prüfung ob Eintrag schon vorhanden, Einträge bearbeiten

VBA Prüfung ob Eintrag schon vorhanden, Einträge bearbeiten
04.08.2024 17:56:39
Stefan
Hallo Gemeinde

Ich suche schon den ganzen Tag nach einer passenden VBA Programmierung, für meinen Fall.

Es gibt genügend Beiträge dazu, leider schaffe ich es nicht die Programmierung auf meine Situation anzupassen.

Vielleicht könnt Ihr Helfen.

Tabelle "ABL"
da ist eine Eingabemaske vorhanden mit 3 Makros

Makro 1 "Suchen"

Public Sub KundensucheABL()
Dim oBlatt As Worksheet
Set oBlatt = ThisWorkbook.Worksheets("ABL") 'Tabellennamen gg. anpassen
With oBlatt
.Range("C13").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;2;FALSCH);)"
.Range("C15").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;3;FALSCH);)"
.Range("C17").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;4;FALSCH);)"
.Range("C19").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;5;FALSCH);)"
.Range("C21").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;6;FALSCH);)"
.Range("C23").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;7;FALSCH);)"
.Range("C25").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;15;FALSCH);)"
.Range("C27").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;16;FALSCH);)"
.Range("F13").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;8;FALSCH);)"
.Range("F15").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;9;FALSCH);)"
.Range("F17").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;10;FALSCH);)"
.Range("F19").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;11;FALSCH);)"
.Range("F21").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;12;FALSCH);)"
.Range("F23").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;13;FALSCH);)"
.Range("F25").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;14;FALSCH);)"
End With

Set oBlatt = Nothing
End Sub

Das funktioniert und blendet Fehler "#NV" aus.
in "D9" wird eine Nummer eingegeben und alle Daten aus "Kundenliste" werden übernommen.

Makro 2 (bearbeiten)

da habe ich noch keine Ahnung wie ich das programmieren soll um Daten anhand der Nummer in "D9" in Tabelle "ABL" abzurufen und wenn ich Daten ändere die dann so zu Speichern dass es keinen neuen Eintrag gibt.

Makro 3 (Neuer Eintrag)

da habe ich bis jetzt nur das aufgenommene Makro plus die Kopie vom Makro 1 (suche) um in Tabelle "ABL" wieder bei Eingabe in "D9" Daten abzurufen.

Sub neuerKunde()
'
' nuerKunde Makro
'

'

Sheets("Kundenliste").Select
Rows("13:13").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A14").Select
Sheets("ABL").Select
Range("D9").Select
Selection.Copy
Sheets("Kundenliste").Select
Range("A13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("C13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("B13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("C15").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("C13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("C17").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("D13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("C19").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("E13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("C21").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("F13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("C23").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("G13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("F13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("H13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("F15").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("I13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B34").Select
Sheets("ABL").Select
Range("F17").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("J13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("F19").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("K13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("F21").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("L13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("F23").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
ActiveWindow.SmallScroll ToRight:=4
Range("M13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("F25").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("N13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("C25").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("O13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Range("C27").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Kundenliste").Select
Range("P13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ABL").Select
Dim oBlatt As Worksheet
Set oBlatt = ThisWorkbook.Worksheets("ABL") 'Tabellennamen gg. anpassen
With oBlatt
.Range("C13").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;2;FALSCH);)"
.Range("C15").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;3;FALSCH);)"
.Range("C17").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;4;FALSCH);)"
.Range("C19").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;5;FALSCH);)"
.Range("C21").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;6;FALSCH);)"
.Range("C23").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;7;FALSCH);)"
.Range("C25").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;15;FALSCH);)"
.Range("C27").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;16;FALSCH);)"
.Range("F13").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;8;FALSCH);)"
.Range("F15").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;9;FALSCH);)"
.Range("F17").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;10;FALSCH);)"
.Range("F19").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;11;FALSCH);)"
.Range("F21").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;12;FALSCH);)"
.Range("F23").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;13;FALSCH);)"
.Range("F25").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:p929;14;FALSCH);)"
End With

Set oBlatt = Nothing
End Sub

Es sollte eine Prüfung erfolgen,
die prüft ob die eingegebene Nummer in Tabelle "ABL" "D9" schon in Tabelle "Kundenliste" Spalte 1 vorhanden ist.
ist die Nummer vorhanden, dann sollte eine MsgBox erscheinen mit der Meldung "Kund schon vorhanden"
Butten "Schließen", Ende.
ist die Nummer nicht vorhanden, soll Excel alles kopieren und am Ende eine MsgBox erzeugen mit dem Eintrag "Kunde erfolgreich übernommen"
Butten "Okay"

Vielen Dank für eure Hilfe

Gruß
Stefan5




Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Prüfung ob Eintrag schon vorhanden, Einträge bearbeiten
04.08.2024 19:13:11
ralf_b
du suchst also eine relativ alltägliche Umsetzung von Funktionen zur Datenverarbeitung.

1. Verwende z.b. eine Vergleichformel oder im VBA Application.match() um den Wert aus Zelle D9 in der passenden Spalte zu suchen. Du erhälst eine Zeilennummer, die du dann verwenden kannst, um den Rest des Datensatzes in deine Eingabemaske zu übertragen. oder die Daten in der gefundenen Zeile zu speichern.
2. wird der Suchbegriff nicht gefunden, weist du das du eine neue Zeile füllen mußt, weil Datensatz noch nicht vorhanden.

Es gehen natürlich auch andere Suchfunktionen wir z.b. Range.find()

das was du hier präsentierst ist quasi eine Formellösung, die kein VBA benötigt um die Daten in die Maske zu laden. Nur solltest du die Formeln mittels vba nicht jedes Mal in die Zellen schreiben. Einmal reicht.
Anzeige
AW: VBA Prüfung ob Eintrag schon vorhanden, Einträge bearbeiten
04.08.2024 19:28:01
Uduuh
Hallo,
füge auf ABL die CommandButtons cmdSuchen und cmdEintragen ein.
Code:
Private Sub cmdSuchen_Click()

Call FormelnRein
End Sub

Private Sub cmdEintragen_Click()
Call CheckKunde
End Sub

In ein Modul:
Sub CheckKunde()

Dim vntRow, vntRet
vntRow = Application.Match(Range("D6"), Sheets("kundenliste").Columns(1), 0)
If IsError(vntRow) Then 'nicht vorhanden
vntRet = MsgBox("Neuer Kunde" & vbLf & "Daten ändern?", vbInformation + vbYesNo, "gebe bekannt...")
If vntRet = vbYes Then
Call Eintragen(True, 0)
MsgBox "Kunde angelegt", vbInformation, "Gebe bekannt..."
Else
MsgBox "Abbruch", vbInformation, "Gebe bekannt..."
End If
Else
vntRet = MsgBox("Kunde bereits vorhanden!" & vbLf & "Daten ändern?", vbInformation + vbYesNo, "Gebe bekannt...")
If vntRet = vbYes Then Call Eintragen(False, CLng(vntRow))
End If
End Sub

Sub Eintragen(bolNeu As Boolean, lngRow As Long)
With Worksheets("kundenliste")
If bolNeu Then
lngRow = .Cells(Rows.Count, 1).End(xlUp).Row
End If
.Cells(lngRow, 1) = Range("D9")
.Cells(lngRow, 2) = Range("C13")
.Cells(lngRow, 3) = Range("C15")
.Cells(lngRow, 4) = Range("C17")
.Cells(lngRow, 5) = Range("C19")
.Cells(lngRow, 6) = Range("C21")
.Cells(lngRow, 7) = Range("C23")
.Cells(lngRow, 8) = Range("F13")
.Cells(lngRow, 9) = Range("F15")
.Cells(lngRow, 10) = Range("F17")
.Cells(lngRow, 11) = Range("F19")
.Cells(lngRow, 12) = Range("F21")
.Cells(lngRow, 13) = Range("F23")
.Cells(lngRow, 14) = Range("F25")
.Cells(lngRow, 15) = Range("C25")
.Cells(lngRow, 16) = Range("C27")
End With
Call FormelnRein
End Sub

Sub FormelnRein()
With Worksheets("ABL")
.Range("C13").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;2;FALSCH);)"
.Range("C15").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;3;FALSCH);)"
.Range("C17").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;4;FALSCH);)"
.Range("C19").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;5;FALSCH);)"
.Range("C21").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;6;FALSCH);)"
.Range("C23").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;7;FALSCH);)"
.Range("C25").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;15;FALSCH);)"
.Range("C27").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;16;FALSCH);)"
.Range("F13").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;8;FALSCH);)"
.Range("F15").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;9;FALSCH);)"
.Range("F17").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;10;FALSCH);)"
.Range("F19").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;11;FALSCH);)"
.Range("F21").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;12;FALSCH);)"
.Range("F23").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;13;FALSCH);)"
.Range("F25").FormulaLocal = "=WENNNV(SVERWEIS(D9;Kundenliste!A5:P929;14;FALSCH);)"
End With
End Sub


Gruß aus'm Pott
Udo
Anzeige
AW: VBA Prüfung ob Eintrag schon vorhanden, Einträge bearbeiten
04.08.2024 20:52:32
Stefan
leider klappt das nicht, es wird nicht geprüft ob schon vorhanden.
AW: VBA Prüfung ob Eintrag schon vorhanden, Einträge bearbeiten
04.08.2024 21:16:07
Stefan
auch überschreibt er nur die letzte Zeile und legt keine neue an pro neuen Eintrag
Tippfehler
05.08.2024 01:37:24
Uduuh
und
vntRow = Application.Match(Range("D9"), Sheets("kundenliste").Columns(1), 0)
Anzeige
AW: Tippfehler
05.08.2024 10:26:45
Stefan
Vielen Dank
Jetzt klappt es Super
AW: VBA Prüfung ob Eintrag schon vorhanden, Einträge bearbeiten
05.08.2024 01:22:02
Uduuh
If bolNeu Then
lngRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige