Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA ID Nummer automatisch akualisieren

VBA ID Nummer automatisch akualisieren
29.08.2024 07:36:15
Frank HK
Hallo, muß leider gleich als Neuling um Hilfe bitten.
Und sorry wenn ich jetzt nicht gleich eine Beispieldatei hochlade. Da sind vertrauliche Daten drinne und ich müsste die dann erst bearbeiten was die Daten angeht.
Also erst mal nur mein Problem. Habe eine Materialbestansliste und diese mit 3 Userform und ein paar VBA Codes bearbeitet, so dass jetzt über eine Batch Nr. (Artikelnummer/ Chargennummer) der Bestand aktualisiert werden kann. Was in der Ursprünglichen Tabelle fehlte war eine ID die ich eingefügt habe in Spalte A. Denn ohne bekam ich es nicht so hin wie es sein sollte. Dann sollte natürlich die ID bei Dateneingabe automatisch vergeben werd. Das klappt alles soweit und schaut gut aus. Bei Suche nach Daten oder bearbeiten einzelner Daten in einner Zeile kann über ein Suchfeld (vorrangig nach Batch) die intelligente Tabelle gefiltert werden. In der Userform zum bearbeiten habe ich ausserdem vor/Zurück Button sowie einen Button Daten anzeigen, die sich auf die ID beziehen.
D.H. Button vor spring die ID um 1 weiter Daten werden dann automatisch angezeigt. Wenn ich manuell eine ID eingebe klicke ich auf Daten anzeigen und die Daten werden angezeigt. Alles in den Feldern der Userform. Wie geschrieben soweit klappt alles.
Jetzt mein Problem !
Die ID´s sollen in der Spalte A fortlaufend sein, was ich dazu gefunden habe ist die Formel =zeile() ! Also in den Zellen der Spalte A die Formel eingegben.
Dann ein Code in VBA das bei Daten anlegen mit automatischer ID Erzeugung, die Formel mit übernommen wird. Problem die oben beschriebenen Vor/zurück Button und der Button Daten anzeigen funktioneren nicht mehr !!! Verträgt sich das nicht VBA Code und Formeln in einer Zelle ?
Hat jemand eine Lösung dafür ?

Nebenbei störte mich anfangs noch das bei gefilterten Tabelle, vor/Zurück nur in den Id´s funtioniert die fortlaufend sind, was ja bei gefilterter Tabelle nicht der Fall ist. ( z.B. 1,2,3,15,17,.....! Bis 3 geht eventuell noch 15 und dann spring Id auf 160), das aber nur am Rande. Könnte damit leben.
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA ID Nummer automatisch akualisieren
29.08.2024 07:58:08
Frank HK
Nachtrag warum ich wollte das die ID auch fortlaufend automatisch angepasst wird ist.
Die Batch kann mehrmals vorkommen und auch mal nicht mehr aktuell sein, womit die Zeile mit den dazu gehörigen Daten dann gelöscht wird oder werden sollte.

Gruss Frank
AW: VBA ID Nummer automatisch akualisieren
29.08.2024 08:17:08
GerdL
Moin Frank!

Application.Max(Tabelle1.Columns(1)) + 1

als Anregung für formelfreie ID's.

Gruß Gerd
Anzeige
AW: VBA ID Nummer automatisch akualisieren
29.08.2024 17:19:28
Frank HK
Hier mal meine Datei, wie sie erstmal funtioniert.

https://www.herber.de/bbs/user/171887.xlsm

Jetzt mal die Version wo ich mein Problem mit der ID habe.
Wie schon beschrieben. In Spalte A (ID) wird automatisch die ID eingetragen wenn Daten angelegt werden ( Startseite blauer Button).
So gesehen auch fortlaufend. Nur möchte ich halt wenn eine Zeile gelöscht wird weil die Daten veraltet sind, d.h. nicht mehr existieren, die ID sich automatisch "fortlaufend sortiert". Was ja auch klappt wenn ich die Formel =Zeile() in der Spalte A eingebe. NUR kann ich dann über den Button grün auf der Startseite nicht mehr die ID eingeben und mir die Daten dazu anzeigen lassen. Hoffe so ist es verständlich.

https://www.herber.de/bbs/user/171888.xlsm

Gruss Frank

Anzeige
AW: VBA ID Nummer automatisch akualisieren
31.08.2024 17:33:58
Frank HK
Mein Plan, als ich das Projekt angefangen habe……
Ich hatte eine Tabelle und wollte aufgrund der Batch (SAP Charge) nach Daten suchen. Dann die Menge, die zu der Batch gehört ändern. Was mir dann auffiel. Die Batch gibt es manchmal doppelt oder es wird nur ein Teil woanders hin umgelagert. Dann kam mein Kollege mit dem ich da Projekt als Verbesserungsvorschlag, der prämiert wird, eingereicht habe. Er wollte gern die Möglichkeit haben auch nach anderen Stichworten zu suchen (filtern). Was noch bei dem Ganzen Thema ist, wahrscheinlich soll die Datei auf eine Bildschirm PC laufen, also ohne Mause, nur per Stift oder Software-Tastatur zu bearbeiten. Was die Auswahl der einzelnen Zeilen etwas erschwert (Bildschirm ca. 14“). Dann der ein oder andere nicht so intelligente Benutzer.
Also Google und YouTube befragt und das ein oder andere interessante dazu gefunden.
Das mit dem Vor/zurück habe ich aus einem Video wo über eine User Form Daten gesucht werden in einer Tabelle. Der Herr hatte dort also eine UF mit Nr. eingeben in 1. TextBox und weitere TextBoxen, wo die Daten angezeigt werden, dies dann über Button öffnen. Dann Button weiter/zurück, um andere Daten auszuwählen und einen zum Einfügen neuer Daten.
Das war schon einmal etwas, was ich brauchen konnte für meinen Plan.
Dann kam dazu das ich auf ein Video gestoßen bin, wo per Code der Spezialfilter angewendet wird. Das sagte mir auch zu, da ich so die Tabelle gefiltert habe und im Hintergrund bei geöffneter UF immer sehen kann was passiert oder ähnliches.
Also musste ich Spalte ID einfügen für vor/zurück Möglichkeit in den Daten. Das mit der ID automatisch vergeben etc. kam dann später dazu. Und da ich wie geschrieben nicht wirklich Ahnung von VBA habe, einfach eingefügt in den Code und getestet. Etwas dafür versuchen rauszunehmen da eventuell überflüssig, kam mir nicht in den Sinn. Auch wollte ich ja funktionierendes nicht zerstören.
Ich bin dann auch darauf gestoßen, wie man sowas professioneller aussehen lassen kann. Und habe es zumindest für die Startseite versucht. Deshalb auch das mit dem Programm beenden.
Und so kam eines zum anderen. Meine Datei funktioniert jetzt erst einmal. Verbesserungen sind immer möglich, bin auch offen daüfer es zu verbessern.
Aus Sicht eines erfahrenen VBA-Programmierers, sicher nicht die besten Codes oder die beste Zusammenstellung der Codes.

Text per Word geschrieben und geprüft. Und Sorry für die Textlänge, soll nur zum Verständnis dienen.
Anzeige
AW: VBA ID Nummer automatisch akualisieren
30.08.2024 08:14:03
hary
Moin
Gib mal bei find die Parameter mit. Wie sieht es dann aus?
 Set finden = Columns(1).Find(what:=ID + 1, LookIn:=xlValues, lookat:=xlWhole)

gruss hary
AW: VBA ID Nummer automatisch akualisieren
30.08.2024 16:29:12
Frank HK
@ Hary

Recht herzlichen Dank ! Habe es eben mal eingegeben musste aber die +1 entfernen und es funktioniert.
Also vielen Dank.
Bitte aber um Verzeihung wenn ich den Thread noch offen lasse. Werde mir das in Ruhe noch einmal ansehen ob alles funktioniert wie ich es will, also auch der Rest.

Gruss Frank
Anzeige
AW: VBA ID Nummer automatisch akualisieren
31.08.2024 10:59:15
ralf_b
nur mal so nebenbei,

deine vor und zurück Makros, suchen nach der ID. Diese prüfst du aber nicht ab ob sie überhaupt mit einer Zahl gefüllt ist. z.b. mit isnumeric(ID)
und später ersetzt du den ID-Wert in der Userform mit dem Wert, den du aus der Tabelle ausliest. Das ist aber genau der Suchwert.
Also eigentlich recht überflüssig diesen zu überschreiben. Meinste nicht auch?

Programm schließen: Warum schließt du nicht nur die Exceldatei? Mit Application.Quit beendest du alle Exceldateien. Auch wenn sie nichts mit dem Programm zu tun haben.

Anzeige
AW: VBA ID Nummer automatisch akualisieren
31.08.2024 17:29:27
Frank HK
Hallo Ralf,

wegen der ID. Da kann ich dir glaube ich nicht ganz folgen. Glaube nur es zu verstehen und du hast sicher recht. Habe den Code vom Makro suchen() übernommen, dann an ID angepasst. Weiß gerade nicht wie der Code sonnst sein sollte.

Ich erlaube mir im Anschluß mal etwas mehr zu schreiben, ein wenig Hintergrund Info wie es zu der Datei wie sie jetzt ist gekommen kam. Sorry!

Zum Thema Programm schließen. Ups, das soll so nicht sein. Steh aber auch gerade auf dem Schlauch wie der Code dann aussehen müsste, wenn ich nur die Rohstoff Datei schließen möchte.

Danke für die Anregung !
Gruss Frank
Anzeige
AW: VBA ID Nummer automatisch akualisieren
31.08.2024 17:51:04
Frank HK
Code Programm schliessen schaut jetzt so aus
Option Explicit
Sub Excel_schliessen()
'excel schliessen
Workbooks("RohstoffForum2_2.xlsm").Close
End Sub

Wie würde der aussehen wenn über Abfrage Excel dann doch mit geschlossen werden soll ? Also Excel schliessen Ja/Nein und bei Nein nur die Arbeitsmappe schliessen. Abfrage wegen speichern kommt dann hoffe ich automatisch von Excel, wenn nicht schon geschehen.
Anzeige
AW: VBA ID Nummer automatisch akualisieren
31.08.2024 18:00:45
ralf_b
die Entwicklungsgeschichte zum Projekt interessiert Niemanden(sorry, is aber so), weil die so oder ähnlich hier wohl Jeder durchlebt hat.
Hier zählt nur der Code wie er jetzt ist und was man evtl. dran machen muß/kann.

Die Application ist dein Excel

Das Workbook ist deine Datei/Arbeitsmappe
https://learn.microsoft.com/de-de/office/vba/api/excel.workbook
https://learn.microsoft.com/de-de/office/vba/api/excel.workbook.close

diese Zeile ist überflüssig
ID = finden.Offset(0, 0)
Begründung: Die ID wird bei "vor" und "zurück" aus dem Textfeld:ID ausgelesen und danach wird dann in der Tabelle gesucht. Sie steht also schon im Textfeld was du mit dieser Zeile aber wieder überschreibst. Ist also nicht nötig.
Anzeige
AW: VBA ID Nummer automatisch akualisieren
31.08.2024 19:22:02
Frank HK
@ Ralf

Vielen vielen Dank !!! Insbesodere für die schnelle Antwort.
"die Entwicklungsgeschichte zum Projekt interessiert Niemanden" Das habe ich zwar vermutet, mir war aber in dem Moment danach um einiges deutlicher zu mach. Sorry an alle, habe einfach nicht nachgedacht !

Mit dem Schliessen, auch Excel war anfangs zum Teil bewusst. Nach deinem Hinweis wurde mir klar, das es Benutzer gibt die eventuell noch andere Excel Dateien offen haben könnten unnd diese nicht schliessen wollen.

Werde das mal ändern. Auch das mit ID.

Anzeige
AW: VBA ID Nummer automatisch akualisieren
29.08.2024 08:10:02
MCO
Moin, Frank!

Sensible Daten (Zahlen / Namen) musst du durch Unsinn / Fake ersetzen um gefahrlos hochzuladen.
Ohne Tabelle, ohne den Code zu kennen, können wir alle nur raten.

Versuch 1: ersetze die Formel =Zeile() durch Werte

Gruß, MCO
;
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