Anzeige
Archiv - Navigation
1880to1884
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe bei Zahlenabgleich

Hilfe bei Zahlenabgleich
05.05.2022 14:44:34
Pascal
Hallo zusammen
ich habe ein vba skript zusammengeschustert mit welchem ich Rechnungsnummern abgleichen kann (können sollte)
https://www.herber.de/bbs/user/152891.xlsm
Problem: Es zeigt mit alle bereits bestehenden Ziffern als schon existierend an...
z.Bsp wenn ich die neue Rechnungsnummer "8" eingebe zeigt es an das bereits existent...
Wie kann idas gelöst werden..?
Vielen Danke für Eure Hilfe!
lg, pascal
makro:

Sub suche()
Dim c As Range
Dim LastRow As Long, ws As Worksheet
Nummer = InputBox("Rechnungsnummer eingeben")
With Sheets("Tabelle1").Range("a2:a5000")
Set c = .Find(Nummer, LookIn:=xlValues)
If Not c Is Nothing Then
MsgBox "Gefunden in Zeile: " & c.Row
Else
MsgBox "Nichts gefunden"
Set ws = Sheets("Tabelle1")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1
ws.Range("A" & LastRow).Value = Nummer
ws.Range("A" & LastRow).Offset(0, 1).Value = Format(Now, "dd/mm/yyyy")
End If
End With
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe bei Zahlenabgleich
05.05.2022 15:04:35
Oberschlumpf
Hi pascal,
in einer neuen, leeren Datei funktioniert dieser Code:

Option Explicit
Sub suche()
Dim c As Range
Dim LastRow As Long, ws As Worksheet
Dim Nummer
Nummer = InputBox("Rechnungsnummer eingeben")
With Sheets("Tabelle1").Range("a2:a5000")
Set c = .Find(Nummer, LookIn:=xlValues)
If Not c Is Nothing Then
MsgBox "Gefunden in Zeile: " & c.Row
Else
MsgBox "Nichts gefunden"
Set ws = Sheets("Tabelle1")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1
ws.Range("A" & LastRow).Value = Nummer
ws.Range("A" & LastRow).Offset(0, 1).Value = Format(Now, "dd/mm/yyyy")
End If
End With
End Sub
Unterschiede zu deinem Code:
- bei dir fehlt Option Explicit
- und dann wird bemängelt, dass die Variable Nummer nicht deklariert war
Hilfts?
Wenn weiter nein, dann ist in deiner Datei/Code irgdwo anders der Wurm drin.
Ciao
Thorsten
Anzeige
AW: Hilfe bei Zahlenabgleich
05.05.2022 15:13:34
ralf_b
Hier meine Variante, wobei auch ich noch eine Anmerkung habe. Dein Makro heißt "suche" aber es fügt auch neue Werte ein. Also wenn du in einiger Zeit dir deinen Code ansiehst wirst du feststellen das eine eindeutige Namensgebung sehr hilfreich sein kann.
beim .find hat noch was gefehlt. Lookat:=xlWhole,

Sub suche()
Dim c As Range
Dim LastRow As Long, ws As Worksheet
Dim Nummer
Nummer = InputBox("Rechnungsnummer eingeben")
Set ws = Sheets("Tabelle1")
With ws.Range("a2:a5000")
Set c = .Find(Nummer, LookIn:=xlValues, Lookat:=xlWhole)
If Not c Is Nothing Then
MsgBox "Gefunden in Zeile: " & c.Row
Else
MsgBox "Nichts gefunden"
Set c = Cells(Rows.Count, 1).End(xlUp)
c.Offset(1).Value = Nummer
c.Offset(1, 1).Value = Format(Now, "dd/mm/yyyy")
End If
End With
End Sub

Anzeige
sorry Thorsten..... owt
05.05.2022 15:14:46
ralf_b
niema problemas - oder wie das heißt :-) owT
05.05.2022 15:24:00
Oberschlumpf
Du tust es ja schon wieder...
06.05.2022 10:05:37
{Boris}
Hi Herbert,
...oder besser formuliert: ...wieder nicht.
Stell den Code doch bitte zusätzlich per Copy & Paste in den Beitrag ;-)
BTW: Bei "GoTo ende" sträuben sich mir die Nackenhaare ;-)
VG, Boris
Fachlich zum Code...
06.05.2022 10:25:06
{Boris}
Hi Herbert,
...bei den Find-Paramentern hast Du Dich verhauen:
Set c = .Find(Nummer, LookIn:=xlWhole)
LookIn:= xlValues
LookAt:= xlWhole
Zudem würde ich bei Find immer alle Parameter explizit angeben, da ansonsten bekanntlich die Einstellungen der letzten Suche übernommen werden.
VG, Boris
Anzeige
AW: Fachlich zum Code...
06.05.2022 14:32:48
GerdL
Hallo Boris,
mit "alle" übertreibst du, denn nicht alle sind immer relevant.
Gruß Gerd
Dann eben "alle relevanten Parameter"...
06.05.2022 15:06:03
{Boris}
Hi Gerd,
...zu denen neben dem erforderlichen What aber auf jeden Fall die beiden genannten optionalen LookIn und LookAt gehören.
Der Rest ist in den meisten Fällen natürlich nicht zwingend erforderlich, aber ich behaupte mal, dass den wenigsten bewusst ist, dass Find insgesamt 9 Parameter hat ;-)
VG, Boris
AW: Dann eben "alle relevanten Parameter"...
06.05.2022 15:51:47
GerdL
Hi,
ich zähle noch MatchCase für die Unterscheidung nach Groß/Klein-Schreibung (ja/nein) dazu.
Gruß Gerd
Ja, kann man so sehen...
06.05.2022 16:02:36
{Boris}
Hi Gerd,
...da aber in den meisten Anfragen nach irgendwelchen (Rechnungs-)nummern oder Datümern gesucht wird, bin ich eh kein Freund der Find-Methode und würde stattdessen lieber Application.Match verwenden. Find ist da einfach zu "unsauber" - im konkreten Fall hat Herbert (die Parameterverwechslung mal außen vor gelassen), nach einer Rechnungsnummer (ZAHL) mit einem STRING (aus der Inputbox) gesucht - Find kommt damit zwar irgendwie klar, aber es ist in meinen Augen einfach nicht "sauber". Und die Suche nach Datümern kann mit Find schon mal sehr kompliziert sein ;-)
VG, Boris
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige