Wie kann ich mit Buchstaben und Zahlen eine Automatische Nummerierung erstellen

  • Excel

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Volker Bunge.

    Wie kann ich mit Buchstaben und Zahlen eine Automatische Nummerierung erstellen

    Hallo liebe Experten,

    Ich benötige bitte Eure Hilfe.

    Ich arbeite mit Office 2016 und beschäftige mich seit Juni 2020 mit VBA / Excel.

    Mein Problem sieht wie folgt aus:

    Mein Vorgesetzter wünscht sich eine automatische Nummerierung. Sie soll folgendermaßen aussehen. Die Nummerierung soll sich dann in der Spalte A / Inventarnummer befinden.

    Standort 1: R21-0001 (als erste manuelle Eingabe) und dann soll sie fortlaufen. Wenn das Jahr herum ist, soll sich die Nummerierung automatisch auf: R22-0001 ändern und dann fortlaufen.

    Standort 2: J21-0001 (als erste manuelle Eingabe) und dann soll sie fortlaufen. Wenn das Jahr herum ist, soll sich die Nummerierung automatisch auf: J22-0001 ändern und dann fortlaufen.

    Standort 3: M21-0001 (als erste manuelle Eingabe) und dann soll sie fortlaufen. Wenn das Jahr herum ist, soll sich die Nummerierung automatisch auf: M22-0001 ändern und dann fortlaufen.

    Die Eingaben werden zwar irgendwann nur noch vom Standort 1 vorgenommen, aber da die erfassten Gegenstände an den anderen Standorten benutzt werden,
    ist der Buchstabe das Entscheidende Kriterium.

    Ich habe bei Google und auch hier im Forum nach einer Lösung gesucht, aber nichts passendes gefunden.
    Meist hatten die fragenden laut Überschrift ein "ähnliches" Problem, was aber dann doch ganz anders war. Sodass ich noch zu keiner Lösung gekommen bin.

    Wie gesagt ich bin Anfänger. Danke für die Hilfe.



    Spoiler anzeigen

    Quellcode

    1. Option Explicit
    2. Private Sub Button_Schließen_Click()
    3. 'TextBox_Lieferdatum leeren
    4. TextBox_Lieferdatum = ""
    5. 'Eingabefenster schließen
    6. Unload Inventar_Eingabe_Maske
    7. End Sub
    8. Private Sub Button_Eingabe_Click()
    9. 'Eingaben der Schaltfläche in die Arbeitsmappe übernehmen
    10. Dim last As Long
    11. last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
    12. 'Inventarnummer
    13. Cells(last, 1).Value = TextBox_Inventarnummer
    14. 'Bezeichnung
    15. Cells(last, 2).Value = TextBox_Bezeichnung
    16. 'BezeichnungZusatz
    17. Cells(last, 3).Value = TextBox_BezeichnungZusatz
    18. 'Invertarrubrik
    19. Cells(last, 4).Value = ComboBox_Inventarrubrik
    20. 'Auftragsnummer
    21. Cells(last, 5).Value = TextBox_Auftragsnummer
    22. 'KostenBrutto
    23. Cells(last, 6).Value = TextBox_KostenBrutto
    24. 'Lieferdatum
    25. Cells(last, 7).Value = TextBox_Lieferdatum
    26. 'Seriennummer
    27. Cells(last, 8).Value = TextBox_Seriennummer
    28. 'Bundnummer / Inventarnummer ALT
    29. Cells(last, 9).Value = TextBox_Bundnummer
    30. 'Hersteller
    31. Cells(last, 10).Value = TextBox_Hersteller
    32. 'Lieferant
    33. Cells(last, 11).Value = TextBox_Lieferant
    34. 'Rechnungsnummer
    35. Cells(last, 12).Value = TextBox_Rechnungsnummer
    36. 'Bemerkung
    37. Cells(last, 13).Value = TextBox_Bemerkung
    38. 'Verwaltungskontenrahmen
    39. Cells(last, 14).Value = TextBox_Verwaltungskontenrahmen
    40. 'Organisationseinheit
    41. Cells(last, 15).Value = TextBox_Organisationseinheit
    42. 'Nutzer
    43. Cells(last, 16).Value = TextBox_Nutzer
    44. 'Standort
    45. Cells(last, 17).Value = TextBox_Standort
    46. 'GebäudeNr
    47. Cells(last, 18).Value = TextBox_GebäudeNr
    48. 'Etage
    49. Cells(last, 19).Value = TextBox_Etage
    50. 'RaumNr
    51. Cells(last, 20).Value = TextBox_RaumNr
    52. MsgBox "Eingabe Erfolgreich"
    53. End Sub
    54. Private Sub CommandButton1_Click()
    55. Kalender_Maske.Show
    56. End Sub
    57. Private Sub TextBox_Inventarnummer_Enter()
    58. 'aktivierte Zelle gelb färben
    59. TextBox_Inventarnummer.BackColor = vbYellow
    60. End Sub
    61. Private Sub TextBox_Inventarnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    62. 'deaktivierte Zelle weiß färben
    63. TextBox_Inventarnummer.BackColor = vbWhite
    64. End Sub
    65. Private Sub TextBox_Bezeichnung_Enter()
    66. 'aktivierte Zelle gelb färben
    67. TextBox_Bezeichnung.BackColor = vbYellow
    68. End Sub
    69. Private Sub TextBox_Bezeichnung_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    70. 'deaktivierte Zelle weiß färben
    71. TextBox_Bezeichnung.BackColor = vbWhite
    72. End Sub
    73. Private Sub TextBox_BezeichnungZusatz_Enter()
    74. 'aktivierte Zelle gelb färben
    75. TextBox_BezeichnungZusatz.BackColor = vbYellow
    76. End Sub
    77. Private Sub TextBox_BezeichnungZusatz_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    78. 'deaktivierte Zelle weiß färben
    79. TextBox_BezeichnungZusatz.BackColor = vbWhite
    80. End Sub
    81. Private Sub ComboBox_Inventarrubrik_Enter()
    82. 'aktivierte Zelle gelb färben
    83. ComboBox_Inventarrubrik.BackColor = vbYellow
    84. End Sub
    85. Private Sub ComboBox_Inventarrubrik_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    86. 'deaktivierte Zelle weiß färben
    87. ComboBox_Inventarrubrik.BackColor = vbWhite
    88. End Sub
    89. Private Sub TextBox_Auftragsnummer_Enter()
    90. 'aktivierte Zelle gelb färben
    91. TextBox_Auftragsnummer.BackColor = vbYellow
    92. End Sub
    93. Private Sub TextBox_Auftragsnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    94. 'deaktivierte Zelle weiß färben
    95. TextBox_Auftragsnummer.BackColor = vbWhite
    96. End Sub
    97. Private Sub TextBox_KostenBrutto_Enter()
    98. 'aktivierte Zelle gelb färben
    99. TextBox_KostenBrutto.BackColor = vbYellow
    100. End Sub
    101. Private Sub TextBox_KostenBrutto_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    102. 'deaktivierte Zelle weiß färben
    103. TextBox_KostenBrutto.BackColor = vbWhite
    104. End Sub
    105. Private Sub TextBox_Lieferdatum_Enter()
    106. 'TextBox_Lieferdatum leeren
    107. TextBox_Lieferdatum.Value = ""
    108. End Sub
    109. Private Sub TextBox_Lieferdatum_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    110. 'TextBox_Lieferdatum leeren
    111. TextBox_Lieferdatum.Value = ""
    112. End Sub
    113. Private Sub TextBox_Seriennummer_Enter()
    114. 'aktivierte Zelle gelb färben
    115. TextBox_Seriennummer.BackColor = vbYellow
    116. End Sub
    117. Private Sub TextBox_Seriennummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    118. 'deaktivierte Zelle weiß färben
    119. TextBox_Seriennummer.BackColor = vbWhite
    120. End Sub
    121. Private Sub TextBox_Bundnummer_Enter()
    122. 'aktivierte Zelle gelb färben
    123. TextBox_Bundnummer.BackColor = vbYellow
    124. End Sub
    125. Private Sub TextBox_Bundnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    126. 'deaktivierte Zelle weiß färben
    127. TextBox_Bundnummer.BackColor = vbWhite
    128. End Sub
    129. Private Sub TextBox_Hersteller_Enter()
    130. 'aktivierte Zelle gelb färben
    131. TextBox_Hersteller.BackColor = vbYellow
    132. End Sub
    133. Private Sub TextBox_Hersteller_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    134. 'deaktivierte Zelle weiß färben
    135. TextBox_Hersteller.BackColor = vbWhite
    136. End Sub
    137. Private Sub TextBox_Lieferant_Enter()
    138. 'aktivierte Zelle gelb färben
    139. TextBox_Lieferant.BackColor = vbYellow
    140. End Sub
    141. Private Sub TextBox_Lieferant_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    142. 'deaktivierte Zelle weiß färben
    143. TextBox_Lieferant.BackColor = vbWhite
    144. End Sub
    145. Private Sub TextBox_Rechnungsnummer_Enter()
    146. 'aktivierte Zelle gelb färben
    147. TextBox_Rechnungsnummer.BackColor = vbYellow
    148. End Sub
    149. Private Sub TextBox_Rechnungsnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    150. 'deaktivierte Zelle weiß färben
    151. TextBox_Rechnungsnummer.BackColor = vbWhite
    152. End Sub
    153. Private Sub TextBox_Bemerkung_Enter()
    154. 'aktivierte Zelle gelb färben
    155. TextBox_Bemerkung.BackColor = vbYellow
    156. End Sub
    157. Private Sub TextBox_Bemerkung_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    158. 'deaktivierte Zelle weiß färben
    159. TextBox_Bemerkung.BackColor = vbWhite
    160. End Sub
    161. Private Sub TextBox_Verwaltungskontenrahmen_Enter()
    162. 'aktivierte Zelle gelb färben
    163. TextBox_Verwaltungskontenrahmen.BackColor = vbYellow
    164. End Sub
    165. Private Sub TextBox_Verwaltungskontenrahmen_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    166. 'deaktivierte Zelle weiß färben
    167. TextBox_Verwaltungskontenrahmen.BackColor = vbWhite
    168. End Sub
    169. Private Sub TextBox_Organisationseinheit_Enter()
    170. 'aktivierte Zelle gelb färben
    171. TextBox_Organisationseinheit.BackColor = vbYellow
    172. End Sub
    173. Private Sub TextBox_Organisationseinheit_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    174. 'deaktivierte Zelle weiß färben
    175. TextBox_Organisationseinheit.BackColor = vbWhite
    176. End Sub
    177. Private Sub TextBox_Nutzer_Enter()
    178. 'aktivierte Zelle gelb färben
    179. TextBox_Nutzer.BackColor = vbYellow
    180. End Sub
    181. Private Sub TextBox_Nutzer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    182. 'deaktivierte Zelle weiß färben
    183. TextBox_Nutzer.BackColor = vbWhite
    184. End Sub
    185. Private Sub TextBox_Standort_Enter()
    186. 'aktivierte Zelle gelb färben
    187. TextBox_Standort.BackColor = vbYellow
    188. End Sub
    189. Private Sub TextBox_Standort_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    190. 'deaktivierte Zelle weiß färben
    191. TextBox_Standort.BackColor = vbWhite
    192. End Sub
    193. Private Sub TextBox_GebäudeNr_Enter()
    194. 'aktivierte Zelle gelb färben
    195. TextBox_GebäudeNr.BackColor = vbYellow
    196. End Sub
    197. Private Sub TextBox_GebäudeNr_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    198. 'deaktivierte Zelle weiß färben
    199. TextBox_GebäudeNr.BackColor = vbWhite
    200. End Sub
    201. Private Sub TextBox_Etage_Enter()
    202. 'aktivierte Zelle gelb färben
    203. TextBox_Etage.BackColor = vbYellow
    204. End Sub
    205. Private Sub TextBox_Etage_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    206. 'deaktivierte Zelle weiß färben
    207. TextBox_Etage.BackColor = vbWhite
    208. End Sub
    209. Private Sub TextBox_RaumNr_Enter()
    210. 'aktivierte Zelle gelb färben
    211. TextBox_RaumNr.BackColor = vbYellow
    212. End Sub
    213. Private Sub TextBox_RaumNr_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    214. 'deaktivierte Zelle weiß färben
    215. TextBox_RaumNr.BackColor = vbWhite
    216. End Sub
    217. Private Sub UserForm_Initialize()
    218. 'Inventarnummer
    219. TextBox_Inventarnummer = ""
    220. 'Bezeichnung
    221. TextBox_Bezeichnung = ""
    222. 'BezeichnungZusatz
    223. TextBox_BezeichnungZusatz = ""
    224. 'Invertarrubrik
    225. ComboBox_Inventarrubrik = ""
    226. With ComboBox_Inventarrubrik
    227. .AddItem "Bedampfungsanlage"
    228. .AddItem "Brutschränke/Brutgeräte"
    229. .AddItem "Bunsenbrenner"
    230. .AddItem "Büroeinrichtung"
    231. .AddItem "Bürotechnik"
    232. .AddItem "Cycler/PCR-Systeme"
    233. .AddItem "Datenverarbeitung"
    234. .AddItem "Dosierkleingeräte"
    235. .AddItem "Druckminderer"
    236. .AddItem "Durchflusszytometer"
    237. .AddItem "Entsorgung"
    238. .AddItem "Erste-Hilfe"
    239. .AddItem "Fahrzeuge"
    240. .AddItem "Filtrationsgeräte"
    241. .AddItem "Fischhälterung"
    242. .AddItem "Folienschweißgeräte"
    243. .AddItem "Fotografiegeräte+Zubehör"
    244. .AddItem "Gelauswertesystem"
    245. .AddItem "Gelgeräte"
    246. .AddItem "Histologie"
    247. .AddItem "Küchengeräte"
    248. .AddItem "Küchenzeile"
    249. .AddItem "Laborhandgeräte"
    250. .AddItem "Labormöbel"
    251. .AddItem "Laborreinigungsgeräte"
    252. .AddItem "Lagerregale"
    253. .AddItem "Leitern"
    254. .AddItem "Messgeräte Labor"
    255. .AddItem "Messgeräte allgemein"
    256. .AddItem "Mikroskope"
    257. .AddItem "Photometer/ELISA-Reader"
    258. .AddItem "Pipetten"
    259. .AddItem "Pipettierhilfen"
    260. .AddItem "Pipettierroboter"
    261. .AddItem "Präsentationsgegenstände"
    262. .AddItem "Reinig.-u. Desinfektionsautomat"
    263. .AddItem "Reinstwasseranlage/Ionenaust."
    264. .AddItem "Rührgeräte"
    265. .AddItem "Schüttelgeräte"
    266. .AddItem "Separator"
    267. .AddItem "Sequenzierungssysteme"
    268. .AddItem "Sicherheitswerkbänke"
    269. .AddItem "Sonstiges"
    270. .AddItem "Sterilisator/Autoklav"
    271. .AddItem "Strahlenschutz"
    272. .AddItem "Stromversorgungsgeräte"
    273. .AddItem "Telekommunikation"
    274. .AddItem "Thermomixer+Wechselblöcke"
    275. .AddItem "Tiefkühlmöbel+Zubehör"
    276. .AddItem "Tierhaltung"
    277. .AddItem "Transportgeräte"
    278. .AddItem "Ultraschallgeräte"
    279. .AddItem "Vakuumpumpen/Kompressor"
    280. .AddItem "Wasserbad/Thermostate"
    281. .AddItem "Weidezaunanlage"
    282. .AddItem "Werkstattausstattung"
    283. .AddItem "Wohnmöbel"
    284. .AddItem "Wäscherei"
    285. .AddItem "Zellaufschlussgeräte"
    286. .AddItem "Zentrifugen+Rotore"
    287. .AddItem "allg. Reinigungsgeräte"
    288. .AddItem "sonst. Heiz-, Wärme-, Kältegeräte"
    289. End With
    290. 'Auftragsnummer
    291. TextBox_Auftragsnummer = ""
    292. 'KostenBrutto
    293. TextBox_KostenBrutto = ""
    294. 'Lieferdatum
    295. TextBox_Lieferdatum.Text = ""
    296. 'Seriennummer
    297. TextBox_Seriennummer = ""
    298. 'Bundnummer / Inventarnummer ALT
    299. TextBox_Bundnummer = ""
    300. 'Hersteller
    301. TextBox_Hersteller = ""
    302. 'Lieferant
    303. TextBox_Lieferant = ""
    304. 'Rechnungsnummer
    305. TextBox_Rechnungsnummer = ""
    306. 'Bemerkung
    307. TextBox_Bemerkung = ""
    308. 'Verwaltungskontenrahmen
    309. TextBox_Verwaltungskontenrahmen = ""
    310. 'Organisationseinheit
    311. TextBox_Organisationseinheit = ""
    312. 'Nutzer
    313. TextBox_Nutzer = ""
    314. 'Standort
    315. TextBox_Standort = ""
    316. 'GebäudeNr
    317. TextBox_GebäudeNr = ""
    318. 'Etage
    319. TextBox_Etage = ""
    320. 'RaumNr
    321. TextBox_RaumNr = ""
    322. End Sub
    323. Option Explicit
    324. Private Sub Button_Schließen_Click()
    325. 'TextBox_Lieferdatum leeren
    326. TextBox_Lieferdatum = ""
    327. 'Eingabefenster schließen
    328. Unload Inventar_Eingabe_Maske
    329. End Sub
    330. Private Sub Button_Eingabe_Click()
    331. 'Eingaben der Schaltfläche in die Arbeitsmappe übernehmen
    332. Dim last As Long
    333. last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
    334. 'Inventarnummer
    335. Cells(last, 1).Value = TextBox_Inventarnummer
    336. 'Bezeichnung
    337. Cells(last, 2).Value = TextBox_Bezeichnung
    338. 'BezeichnungZusatz
    339. Cells(last, 3).Value = TextBox_BezeichnungZusatz
    340. 'Invertarrubrik
    341. Cells(last, 4).Value = ComboBox_Inventarrubrik
    342. 'Auftragsnummer
    343. Cells(last, 5).Value = TextBox_Auftragsnummer
    344. 'KostenBrutto
    345. Cells(last, 6).Value = TextBox_KostenBrutto
    346. 'Lieferdatum
    347. Cells(last, 7).Value = TextBox_Lieferdatum
    348. 'Seriennummer
    349. Cells(last, 8).Value = TextBox_Seriennummer
    350. 'Bundnummer / Inventarnummer ALT
    351. Cells(last, 9).Value = TextBox_Bundnummer
    352. 'Hersteller
    353. Cells(last, 10).Value = TextBox_Hersteller
    354. 'Lieferant
    355. Cells(last, 11).Value = TextBox_Lieferant
    356. 'Rechnungsnummer
    357. Cells(last, 12).Value = TextBox_Rechnungsnummer
    358. 'Bemerkung
    359. Cells(last, 13).Value = TextBox_Bemerkung
    360. 'Verwaltungskontenrahmen
    361. Cells(last, 14).Value = TextBox_Verwaltungskontenrahmen
    362. 'Organisationseinheit
    363. Cells(last, 15).Value = TextBox_Organisationseinheit
    364. 'Nutzer
    365. Cells(last, 16).Value = TextBox_Nutzer
    366. 'Standort
    367. Cells(last, 17).Value = TextBox_Standort
    368. 'GebäudeNr
    369. Cells(last, 18).Value = TextBox_GebäudeNr
    370. 'Etage
    371. Cells(last, 19).Value = TextBox_Etage
    372. 'RaumNr
    373. Cells(last, 20).Value = TextBox_RaumNr
    374. MsgBox "Eingabe Erfolgreich"
    375. End Sub
    376. Private Sub CommandButton1_Click()
    377. Kalender_Maske.Show
    378. End Sub
    379. Private Sub TextBox_Inventarnummer_Enter()
    380. 'aktivierte Zelle gelb färben
    381. TextBox_Inventarnummer.BackColor = vbYellow
    382. End Sub
    383. Private Sub TextBox_Inventarnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    384. 'deaktivierte Zelle weiß färben
    385. TextBox_Inventarnummer.BackColor = vbWhite
    386. End Sub
    387. Private Sub TextBox_Bezeichnung_Enter()
    388. 'aktivierte Zelle gelb färben
    389. TextBox_Bezeichnung.BackColor = vbYellow
    390. End Sub
    391. Private Sub TextBox_Bezeichnung_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    392. 'deaktivierte Zelle weiß färben
    393. TextBox_Bezeichnung.BackColor = vbWhite
    394. End Sub
    395. Private Sub TextBox_BezeichnungZusatz_Enter()
    396. 'aktivierte Zelle gelb färben
    397. TextBox_BezeichnungZusatz.BackColor = vbYellow
    398. End Sub
    399. Private Sub TextBox_BezeichnungZusatz_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    400. 'deaktivierte Zelle weiß färben
    401. TextBox_BezeichnungZusatz.BackColor = vbWhite
    402. End Sub
    403. Private Sub ComboBox_Inventarrubrik_Enter()
    404. 'aktivierte Zelle gelb färben
    405. ComboBox_Inventarrubrik.BackColor = vbYellow
    406. End Sub
    407. Private Sub ComboBox_Inventarrubrik_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    408. 'deaktivierte Zelle weiß färben
    409. ComboBox_Inventarrubrik.BackColor = vbWhite
    410. End Sub
    411. Private Sub TextBox_Auftragsnummer_Enter()
    412. 'aktivierte Zelle gelb färben
    413. TextBox_Auftragsnummer.BackColor = vbYellow
    414. End Sub
    415. Private Sub TextBox_Auftragsnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    416. 'deaktivierte Zelle weiß färben
    417. TextBox_Auftragsnummer.BackColor = vbWhite
    418. End Sub
    419. Private Sub TextBox_KostenBrutto_Enter()
    420. 'aktivierte Zelle gelb färben
    421. TextBox_KostenBrutto.BackColor = vbYellow
    422. End Sub
    423. Private Sub TextBox_KostenBrutto_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    424. 'deaktivierte Zelle weiß färben
    425. TextBox_KostenBrutto.BackColor = vbWhite
    426. End Sub
    427. Private Sub TextBox_Lieferdatum_Enter()
    428. 'TextBox_Lieferdatum leeren
    429. TextBox_Lieferdatum.Value = ""
    430. End Sub
    431. Private Sub TextBox_Lieferdatum_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    432. 'TextBox_Lieferdatum leeren
    433. TextBox_Lieferdatum.Value = ""
    434. End Sub
    435. Private Sub TextBox_Seriennummer_Enter()
    436. 'aktivierte Zelle gelb färben
    437. TextBox_Seriennummer.BackColor = vbYellow
    438. End Sub
    439. Private Sub TextBox_Seriennummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    440. 'deaktivierte Zelle weiß färben
    441. TextBox_Seriennummer.BackColor = vbWhite
    442. End Sub
    443. Private Sub TextBox_Bundnummer_Enter()
    444. 'aktivierte Zelle gelb färben
    445. TextBox_Bundnummer.BackColor = vbYellow
    446. End Sub
    447. Private Sub TextBox_Bundnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    448. 'deaktivierte Zelle weiß färben
    449. TextBox_Bundnummer.BackColor = vbWhite
    450. End Sub
    451. Private Sub TextBox_Hersteller_Enter()
    452. 'aktivierte Zelle gelb färben
    453. TextBox_Hersteller.BackColor = vbYellow
    454. End Sub
    455. Private Sub TextBox_Hersteller_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    456. 'deaktivierte Zelle weiß färben
    457. TextBox_Hersteller.BackColor = vbWhite
    458. End Sub
    459. Private Sub TextBox_Lieferant_Enter()
    460. 'aktivierte Zelle gelb färben
    461. TextBox_Lieferant.BackColor = vbYellow
    462. End Sub
    463. Private Sub TextBox_Lieferant_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    464. 'deaktivierte Zelle weiß färben
    465. TextBox_Lieferant.BackColor = vbWhite
    466. End Sub
    467. Private Sub TextBox_Rechnungsnummer_Enter()
    468. 'aktivierte Zelle gelb färben
    469. TextBox_Rechnungsnummer.BackColor = vbYellow
    470. End Sub
    471. Private Sub TextBox_Rechnungsnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    472. 'deaktivierte Zelle weiß färben
    473. TextBox_Rechnungsnummer.BackColor = vbWhite
    474. End Sub
    475. Private Sub TextBox_Bemerkung_Enter()
    476. 'aktivierte Zelle gelb färben
    477. TextBox_Bemerkung.BackColor = vbYellow
    478. End Sub
    479. Private Sub TextBox_Bemerkung_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    480. 'deaktivierte Zelle weiß färben
    481. TextBox_Bemerkung.BackColor = vbWhite
    482. End Sub
    483. Private Sub TextBox_Verwaltungskontenrahmen_Enter()
    484. 'aktivierte Zelle gelb färben
    485. TextBox_Verwaltungskontenrahmen.BackColor = vbYellow
    486. End Sub
    487. Private Sub TextBox_Verwaltungskontenrahmen_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    488. 'deaktivierte Zelle weiß färben
    489. TextBox_Verwaltungskontenrahmen.BackColor = vbWhite
    490. End Sub
    491. Private Sub TextBox_Organisationseinheit_Enter()
    492. 'aktivierte Zelle gelb färben
    493. TextBox_Organisationseinheit.BackColor = vbYellow
    494. End Sub
    495. Private Sub TextBox_Organisationseinheit_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    496. 'deaktivierte Zelle weiß färben
    497. TextBox_Organisationseinheit.BackColor = vbWhite
    498. End Sub
    499. Private Sub TextBox_Nutzer_Enter()
    500. 'aktivierte Zelle gelb färben
    501. TextBox_Nutzer.BackColor = vbYellow
    502. End Sub
    503. Private Sub TextBox_Nutzer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    504. 'deaktivierte Zelle weiß färben
    505. TextBox_Nutzer.BackColor = vbWhite
    506. End Sub
    507. Private Sub TextBox_Standort_Enter()
    508. 'aktivierte Zelle gelb färben
    509. TextBox_Standort.BackColor = vbYellow
    510. End Sub
    511. Private Sub TextBox_Standort_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    512. 'deaktivierte Zelle weiß färben
    513. TextBox_Standort.BackColor = vbWhite
    514. End Sub
    515. Private Sub TextBox_GebäudeNr_Enter()
    516. 'aktivierte Zelle gelb färben
    517. TextBox_GebäudeNr.BackColor = vbYellow
    518. End Sub
    519. Private Sub TextBox_GebäudeNr_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    520. 'deaktivierte Zelle weiß färben
    521. TextBox_GebäudeNr.BackColor = vbWhite
    522. End Sub
    523. Private Sub TextBox_Etage_Enter()
    524. 'aktivierte Zelle gelb färben
    525. TextBox_Etage.BackColor = vbYellow
    526. End Sub
    527. Private Sub TextBox_Etage_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    528. 'deaktivierte Zelle weiß färben
    529. TextBox_Etage.BackColor = vbWhite
    530. End Sub
    531. Private Sub TextBox_RaumNr_Enter()
    532. 'aktivierte Zelle gelb färben
    533. TextBox_RaumNr.BackColor = vbYellow
    534. End Sub
    535. Private Sub TextBox_RaumNr_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    536. 'deaktivierte Zelle weiß färben
    537. TextBox_RaumNr.BackColor = vbWhite
    538. End Sub
    539. Private Sub UserForm_Initialize()
    540. 'Inventarnummer
    541. TextBox_Inventarnummer = ""
    542. 'Bezeichnung
    543. TextBox_Bezeichnung = ""
    544. 'BezeichnungZusatz
    545. TextBox_BezeichnungZusatz = ""
    546. 'Invertarrubrik
    547. ComboBox_Inventarrubrik = ""
    548. With ComboBox_Inventarrubrik
    549. .AddItem "Bedampfungsanlage"
    550. .AddItem "Brutschränke/Brutgeräte"
    551. .AddItem "Bunsenbrenner"
    552. .AddItem "Büroeinrichtung"
    553. .AddItem "Bürotechnik"
    554. .AddItem "Cycler/PCR-Systeme"
    555. .AddItem "Datenverarbeitung"
    556. .AddItem "Dosierkleingeräte"
    557. .AddItem "Druckminderer"
    558. .AddItem "Durchflusszytometer"
    559. .AddItem "Entsorgung"
    560. .AddItem "Erste-Hilfe"
    561. .AddItem "Fahrzeuge"
    562. .AddItem "Filtrationsgeräte"
    563. .AddItem "Fischhälterung"
    564. .AddItem "Folienschweißgeräte"
    565. .AddItem "Fotografiegeräte+Zubehör"
    566. .AddItem "Gelauswertesystem"
    567. .AddItem "Gelgeräte"
    568. .AddItem "Histologie"
    569. .AddItem "Küchengeräte"
    570. .AddItem "Küchenzeile"
    571. .AddItem "Laborhandgeräte"
    572. .AddItem "Labormöbel"
    573. .AddItem "Laborreinigungsgeräte"
    574. .AddItem "Lagerregale"
    575. .AddItem "Leitern"
    576. .AddItem "Messgeräte Labor"
    577. .AddItem "Messgeräte allgemein"
    578. .AddItem "Mikroskope"
    579. .AddItem "Photometer/ELISA-Reader"
    580. .AddItem "Pipetten"
    581. .AddItem "Pipettierhilfen"
    582. .AddItem "Pipettierroboter"
    583. .AddItem "Präsentationsgegenstände"
    584. .AddItem "Reinig.-u. Desinfektionsautomat"
    585. .AddItem "Reinstwasseranlage/Ionenaust."
    586. .AddItem "Rührgeräte"
    587. .AddItem "Schüttelgeräte"
    588. .AddItem "Separator"
    589. .AddItem "Sequenzierungssysteme"
    590. .AddItem "Sicherheitswerkbänke"
    591. .AddItem "Sonstiges"
    592. .AddItem "Sterilisator/Autoklav"
    593. .AddItem "Strahlenschutz"
    594. .AddItem "Stromversorgungsgeräte"
    595. .AddItem "Telekommunikation"
    596. .AddItem "Thermomixer+Wechselblöcke"
    597. .AddItem "Tiefkühlmöbel+Zubehör"
    598. .AddItem "Tierhaltung"
    599. .AddItem "Transportgeräte"
    600. .AddItem "Ultraschallgeräte"
    601. .AddItem "Vakuumpumpen/Kompressor"
    602. .AddItem "Wasserbad/Thermostate"
    603. .AddItem "Weidezaunanlage"
    604. .AddItem "Werkstattausstattung"
    605. .AddItem "Wohnmöbel"
    606. .AddItem "Wäscherei"
    607. .AddItem "Zellaufschlussgeräte"
    608. .AddItem "Zentrifugen+Rotore"
    609. .AddItem "allg. Reinigungsgeräte"
    610. .AddItem "sonst. Heiz-, Wärme-, Kältegeräte"
    611. End With
    612. 'Auftragsnummer
    613. TextBox_Auftragsnummer = ""
    614. 'KostenBrutto
    615. TextBox_KostenBrutto = ""
    616. 'Lieferdatum
    617. TextBox_Lieferdatum.Text = ""
    618. 'Seriennummer
    619. TextBox_Seriennummer = ""
    620. 'Bundnummer / Inventarnummer ALT
    621. TextBox_Bundnummer = ""
    622. 'Hersteller
    623. TextBox_Hersteller = ""
    624. 'Lieferant
    625. TextBox_Lieferant = ""
    626. 'Rechnungsnummer
    627. TextBox_Rechnungsnummer = ""
    628. 'Bemerkung
    629. TextBox_Bemerkung = ""
    630. 'Verwaltungskontenrahmen
    631. TextBox_Verwaltungskontenrahmen = ""
    632. 'Organisationseinheit
    633. TextBox_Organisationseinheit = ""
    634. 'Nutzer
    635. TextBox_Nutzer = ""
    636. 'Standort
    637. TextBox_Standort = ""
    638. 'GebäudeNr
    639. TextBox_GebäudeNr = ""
    640. 'Etage
    641. TextBox_Etage = ""
    642. 'RaumNr
    643. TextBox_RaumNr = ""
    644. End Sub

    Dateien

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Johanne“ ()

    Hallo,
    leider habe ich noch keine Antwort erhalten.
    Es wäre schön, eine Rückmeldung zu bekommen für den Fall, dass ich mich "falsch oder undeutlich" ausgedrückt habe.

    Wenn das mit der automatischen Nummerierung nicht klappt, vielleicht gibt es eine andere Lösung.
    Ich habe noch mal Rücksprache mit meinem Vorgesetzten gehalten und er würde sich freuen, wenn es klappt. Ansonsten würde er sich über die Alternative freuen: dass man bei der Eingabe den höchsten Wert findet. Hier aber auch wieder mit dem Buchstaben, denn der ist Dreh- und Angelpunkt, aufgrund der 3 Standorte. (Die Inventarnummern sollen darüber eindeutig zugeordnet werden können.)

    Bitte helft mir.
    Danke
    Als Idee wie ich es angehen würde.
    - Ein zusätzliches Blatt erstellen, wo die letzte Inventarnummer in drei Zellen pro Standort stehen. (z.B. A1 = R ; B1 = 21 ; C1=0001)
    - Im Eingabeformular ein Auswahlfeld für den Standort
    - Wenn bei der Eingabe der Standort ausgewählt wird, liest man die Werte aus dem Hilfsblatt, addiert 1 zu der Nummer, überprüft das Jahr und setzt die neue Inventarnummer zusammen. (z.B. R21-0002)
    - beim Bestätigen der Eingabe, schreibt man die neuen Daten wieder aufs Hilfsblatt (z.B. A1 = R ; B1 = 21 ; C1=0002)
    @wolfi_bayern
    Hallo,
    theoretisch spricht nichts dagegen, aber praktisch schon. Mein Vorgesetzter hätte gerne nur ein Tabellenblatt und wenn ich nun aus einem drei machen würde, wäre meine Arbeit fast umsonst gewesen, da ich "alles" umstellen müsste.
    Außerdem müssten die "Anwender" (die die Datenbank später weiter führen) darauf achten, dass sie das richtige Tabellenblatt benutzen, diese Fehlerquelle sollte möglichst vermieden werden.

    @HenryV
    Hallo,
    ich werde deinen Tipp gerne ausprobieren, auch wenn ich noch nicht sicher bin, wie ich den Code schreiben muss. (würde mich eher zu den Anfängern zählen). Wenn es nicht klappt, da ich die falschen Codes benutze, werde ich mich melden und auch wenn es klappt.


    Danke an beide für die Tipps, Ideen und Hilfe.
    Hey HenryV,

    jetzt könnte ich tatsächlich deine Hilfe gebrauchen.

    im Anhang findest du meine "Arbeit".


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Explicit
    2. Private Sub Button_Eingabe_Click()
    3. 'Eingaben der Schaltfläche in die Arbeitsmappe übernehmen
    4. Dim last As Long
    5. last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
    6. 'Standort Riems
    7. Cells(last, 1).Value = "R"
    8. 'Aktuelles Jahr
    9. Cells(last, 2).Value = "21"
    10. 'fortlaufende Nummer
    11. Cells(last, 3).Value = "0001"
    12. 'Standort Jena
    13. Cells(last, 5).Value = "J"
    14. 'Aktuelles Jahr
    15. Cells(last, 6).Value = "21"
    16. 'fortlaufende Nummer
    17. Cells(last, 7).Value = "0001"
    18. 'Standort Mariensee
    19. Cells(last, 9).Value = "M"
    20. 'Aktuelles Jahr
    21. Cells(last, 10).Value = "21"
    22. 'fortlaufende Nummer
    23. Cells(last, 11).Value = "0001"
    24. End Sub
    25. Private Sub ComboBox_Standort_Change()
    26. If ComboBox_Standort = "Riems" Then
    27. MsgBox "Standort Riems"
    28. ElseIf ComboBox_Standort = "Jena" Then
    29. MsgBox "Standort Jena"
    30. ElseIf ComboBox_Standort = "Mariensee" Then
    31. MsgBox "Standort Mariensee"
    32. End If
    33. End Sub
    34. Private Sub UserForm_Initialize()
    35. 'Standort auswählen
    36. ComboBox_Standort = ""
    37. With ComboBox_Standort
    38. .AddItem "Riems"
    39. .AddItem "Jena"
    40. .AddItem "Mariensee"
    41. End With
    42. End Sub


    Die Zeilen 38-47 waren zum "Üben" um die Wenn-Funktion auszuprobieren, ob eine MsgBox kommt.
    Das kannst Du gerne ändern.

    1. Frage/Problem: Ich weiß nicht, wie ich die Wenn-Funktion am Besten schreiben soll. (bin VBA Anfänger und habe auch im Englischen noch so manche Schwierigkeiten)

    2. Frage/Problem:
    Wie ändere ich das Zahlenformat, damit bei der Ausgabe der Zahlen, die "000" mitgenommen werden?
    In Tabelle 1 startet meine Liste bei Zeile 3 und wenn möglich sollte die Liste so fortlaufen.

    3. Frage/Problem:
    Geht es auch so, dass ich nur die 3 Zellen des jeweiligen Standortes fülle?
    Hängt vermutlich auch mit der Wenn Funktion zusammen, oder?


    Ich danke vorab und probiere auch weiter.

    Johanne
    Dateien

    Wie kann ich mit Buchstaben und Zahlen eine Automatische Nummerierung erstellen

    Hallo,
    ich habe mich an der Nummerierung versucht, aber es klappt leider nicht so, wie ich es mir wünsche.

    1. Wenn ich den Standort Riems auswähle schreibt er mir die Nummerierung in die nächste Zeile, soweit gut. Aber wenn ich dann den Standort Jena auswähle, dann schreibt er die Nummerierung in die gleiche Zeile und löscht die Riems Nummerierung raus.
    Er kann die gleiche Zeile nehmen, aber die bereits vorhandene Nummerierung Muss[b][/b] bestehen bleiben.
    2. Weiß ich noch nicht, wie ich die Zahlen (Format: 0001) einbinden kann, dass er die höchste findet und die nächste (+1) schreibt. [Pro Jahr und pro Standort werden nicht mehr als 9999 Buchungen/Eintragungen erwartet, daher wurde die Zahl so gewählt.]
    3. Gibt es die Möglichkeit, dass die Nummerierung bei Jahreswechsel auch automatisch die "21" in die "22" ändert oder muss ich die erste "Neueingabe" für 2022 manuell machen?

    Ich habe meine Datei 2x angehängt, da ich nicht weiß welche sich von euch öffnen lässt. (1x mit Makros und 1x ohne Makros)


    Hier kommt mein Code Versuch.

    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Sub Button_Eingabe_Click()
    3. 'Eingaben der Schaltfläche in die Arbeitsmappe übernehmen
    4. 'Eingabefenster schließen
    5. Unload UserForm1
    6. Dim last As Long
    7. last = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row + 1
    8. last = Tabelle1.Cells(Rows.Count, 2).End(xlUp).Row + 1
    9. last = Tabelle1.Cells(Rows.Count, 3).End(xlUp).Row + 1
    10. last = Tabelle1.Cells(Rows.Count, 4).End(xlUp).Row + 1
    11. last = Tabelle1.Cells(Rows.Count, 5).End(xlUp).Row + 1
    12. last = Tabelle1.Cells(Rows.Count, 6).End(xlUp).Row + 1
    13. last = Tabelle1.Cells(Rows.Count, 7).End(xlUp).Row + 1
    14. last = Tabelle1.Cells(Rows.Count, 8).End(xlUp).Row + 1
    15. last = Tabelle1.Cells(Rows.Count, 9).End(xlUp).Row + 1
    16. last = Tabelle1.Cells(Rows.Count, 10).End(xlUp).Row + 1
    17. last = Tabelle1.Cells(Rows.Count, 11).End(xlUp).Row + 1
    18. Dim strStandorte As String
    19. 'Standort Riems
    20. Cells(last, 1).Value = ""
    21. 'Jahr
    22. Cells(last, 2).Value = ""
    23. 'Nummer
    24. Cells(last, 3).Value = ""
    25. 'Standort Jena
    26. Cells(last, 5).Value = ""
    27. 'Jahr
    28. Cells(last, 6).Value = ""
    29. 'Nummer
    30. Cells(last, 7).Value = ""
    31. 'Standort Mariensee
    32. Cells(last, 9).Value = ""
    33. 'Jahr
    34. Cells(last, 10).Value = ""
    35. 'Nummer
    36. Cells(last, 11).Value = ""
    37. If ComboBox_Standort = "Riems" Then
    38. Cells(last, 1).Value = "R"
    39. Cells(last, 2).Value = "21"
    40. ElseIf ComboBox_Standort = "Jena" Then
    41. Cells(last, 5).Value = "J"
    42. Cells(last, 6).Value = "21"
    43. ElseIf ComboBox_Standort = "Mariensee" Then
    44. Cells(last, 9).Value = "M"
    45. Cells(last, 10).Value = "21"
    46. End If
    47. End Sub
    48. Private Sub UserForm_Initialize()
    49. 'Standort auswählen
    50. ComboBox_Standort = ""
    51. With ComboBox_Standort
    52. .AddItem "Riems"
    53. .AddItem "Jena"
    54. .AddItem "Mariensee"
    55. End With
    56. End Sub


    Da ich erst im Juni angefangen habe mich mit VBA zu beschäftigen, würde ich mich auf jeden Fall zu den Anfängern zählen.

    Danke im voraus für eure Hilfe.

    VG Johanne
    Dateien
    Hallo Johanne,

    wenn ich das so richtig verstanden habe, dann versuch mal dieses hier

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Btn_Fertig_Click()
    2. ' Ein paar Hilfsvariablen festlegen
    3. Dim StandortWahl As String
    4. Dim Artikelbezeichnung As String
    5. Dim Artikelpreis As Double
    6. Dim LetzteInventarnrStandort As Integer
    7. Dim AktZeilenwert As String
    8. Dim AktLfdNr As Integer
    9. ' Die Daten in die Liste übernehmen
    10. ' Als erstes einmal die Eingaben in Variablen ablegen. Damit ist es gleich leichter auf diese Werte zurückzugreifen
    11. StandortWahl = ComboBox_Standort.Text
    12. Artikelbezeichnung = TBox_Bezeichnung.Text
    13. Artikelpreis = TBox_Preis.Text
    14. ' Prüfen, ob überhaupt schon Daten da sind
    15. If Sheets("Tabelle1").Range("A2").Value = "" Then
    16. ' Wenn nicht, dann einfach diesen Eintrag zum ersten machen
    17. Sheets("Tabelle1").Range("A2").Value = Mid(StandortWahl, 1, 1) & Format(Now, "YY") & "-0001"
    18. Sheets("Tabelle1").Range("B2").Value = Artikelbezeichnung
    19. Sheets("Tabelle1").Range("C2").Value = Artikelpreis
    20. 'Eingabefenster schließen
    21. Unload UserForm1
    22. ' Sub ist in diesen Fall hier zu ende
    23. Exit Sub
    24. End If
    25. 'letzte Nummer des aktuellen Standortes ermitteln
    26. LetzteInventarnrStandort = 0 ' Variablenwert löschen, sicher ist sicher
    27. For zeile = 2 To 10000
    28. AktZeilenwert = Sheets("Tabelle1").Range("A" & zeile).Value
    29. ' Wenn die aktuelle Zeile leer ist, dann sind alle Datensätze durchlaufen
    30. If AktZeilenwert = "" Then
    31. Exit For
    32. End If
    33. ' Prüfen, ob das erste Zeichen der vorhandenen Inventarnr. dem des ersten Zeichens von dem gewählten Standort entspricht
    34. If Mid(AktZeilenwert, 1, 1) = Mid(StandortWahl, 1, 1) Then
    35. ' Aber erst einmal prüfen, ob das Jahr das heutige Jahr ist
    36. If Mid(AktZeilenwert, 2, 2) = Format(Now, "YY") Then
    37. ' Wenn ja, die Nr. sich merken bzw. prüfen, ob diese größer als die letzte gemerke ist
    38. AktLfdNr = Mid(AktZeilenwert, 5, 4)
    39. If AktLfdNr > LetzteInventarnrStandort Then
    40. LetzteInventarnrStandort = AktLfdNr
    41. End If
    42. End If
    43. End If
    44. Next zeile
    45. ' Wenn für diesen Standort noch kein Artikel vorhanden ist, dann bei 1 anfangen
    46. ' Da aber die Variable in der nächsten Zeile eh automatisch um 1 erhöht wird, kann hier ruhig LetzteInventarnrStandort = 0 sein
    47. ' jetzt die Daten eintragen
    48. Sheets("Tabelle1").Range("A" & zeile).Value = Mid(StandortWahl, 1, 1) & Format(Now, "YY") & "-" & Format(LetzteInventarnrStandort + 1, "0000")
    49. Sheets("Tabelle1").Range("B" & zeile).Value = Artikelbezeichnung
    50. Sheets("Tabelle1").Range("C" & zeile).Value = Artikelpreis
    51. 'Eingabefenster schließen
    52. Unload UserForm1
    53. End Sub
    54. Private Sub UserForm_Initialize()
    55. 'Standort auswählen
    56. ComboBox_Standort = ""
    57. With ComboBox_Standort
    58. .AddItem "Riems"
    59. .AddItem "Jena"
    60. .AddItem "Mariensee"
    61. End With
    62. End Sub


    (Der Code kommt in die Userform1)

    Um den Jahreswechsel zu simulieren, einfach mal die Uhr umstellen. Mal vor, mal zurück, mal aktuelles Jahr. Nach jedem Umstellen dann die Funktion testen. Sollte so klappen. Aber natürlich immer nur für das aktuelle Jahr wird der höchste Wert ermittelt.

    Stellst du also auf 2019 zurück, dann wird der erste Eintrag x19-0001 lauten. Erst danach x19-0002 usw. Stellst Du auf 2020, dann geht das gleiche Spielchen wie bei 2019 los, ebenso bei 2021 usw. Wenn Du dann wieder auf 2019 umstellst, sollte es mit x19-0003 usw. weitergehen.

    Da meine Routine immer für das aktuelle Jahr die letzte, somit die höchste Nr. ermittelt, ist die Sortierreihenfolge der Daten vollkommen egal. Es wird erst der Standort geprüft, dann das Jahr und nur innerhalb des aktuellen Jahres erfolgt die Ermittlung der letzten Zahl.

    Ich hoffe, dass die Beschreibung im Code ausreicht. Wenn nicht einfach noch mal melden.

    Glaube, dass könnte es sein, was Du suchst.

    Gruß
    Volker

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Volker Bunge“ ()

    Hey Volker,
    sorry dass ich mich nicht eher gemeldet habe, aber da ich die Datenbank für die Arbeit mache, kann ich auch nur von der Arbeit aus antworten oder Fragen stellen.

    Du hast Dir sehr viel Mühe gegeben und dafür Danke ich erstmal.
    Heute morgen habe ich auch Zeit, das ganze auszuprobieren.
    Gestern habe ich zwar angefangen, aber da lief es nicht so durch. (Vermutlich weil ich deinen Code direkt in die UserForm1 eingefügt habe und nicht den Umweg über Word nahm.)

    Wenn ich Deinen Code nehme, dann funktioniert er. Er zählt wie er soll immer schön nach "oben". Das ist auch genau das was ich möchte. Da ich hier auf der Arbeit bin, weiß ich nicht, ob ich einfach das Datum ändern kann, um zu testen, ob er auch bei 2019 oder 2021 die "aktuellen" Jahre mitnimmt.

    Was ich aber nicht verstehe ist, wenn ich in deinem Code etwas ändere, dann zählt er nicht mehr rauf, sondern hört bei Riems bei 0003 auf und bei Jena und Mariensee bei 0001 zu zählen.
    Das ist für mich nicht logisch.
    Vielleicht kannst du mir da weiterhelfen.

    Hier sind dir geänderten Zeilen:
    Spoiler anzeigen

    Zeile 4 alt:

    VB.NET-Quellcode

    1. Dim Artikelbezeichnung As String


    Zeile 4 neu:

    VB.NET-Quellcode

    1. Dim Jahr As String


    Zeile 5 alt:

    VB.NET-Quellcode

    1. Dim Artikelpreis As Double


    Zeile 5 neu:

    VB.NET-Quellcode

    1. Dim Nummer As Double


    Zeile 14 alt:

    VB.NET-Quellcode

    1. Artikelbezeichnung = TBox_Bezeichnung.Text


    Zeile 14 neu:

    VB.NET-Quellcode

    1. Jahr= TBox_Jahr.Text


    Zeile 15 alt:

    VB.NET-Quellcode

    1. Artikelpreis = TBox_Preis.Text


    Zeile 15 neu:

    VB.NET-Quellcode

    1. Nummer = TBox_Nummer.Text


    Zeile 21 alt:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("B2").Value = Artikelbezeichnung


    Zeile 21 neu:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("B2").Value = Jahr


    Zeile 22 alt:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("C2").Value = Artikelpreis


    Zeile 22 neu:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("C2").Value = Nummer


    Zeile 57 alt:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("A" & zeile).Value = Mid(StandortWahl, 1, 1) & Format(Now, "YY") & "-" & Format(LetzteInventarnrStandort + 1, "0000")


    Zeile 57 neu:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("A" & zeile).Value = Mid(StandortWahl, 1, 1) & "-" & Format(Now, "YY") & "-" & Format(LetzteInventarnrStandort + 1, "0000")


    Zeile 58 alt:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("B" & zeile).Value = Artikelbezeichnung


    Zeile 58 neu:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("B" & zeile).Value = Jahr


    Zeile 59 alt:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("C" & zeile).Value = Artikelpreis


    Zeile 59 neu:

    VB.NET-Quellcode

    1. Sheets("Tabelle1").Range("C" & zeile).Value = Nummer



    Vielleicht siehst Du ja warum es mit meinen Änderungen nicht funktioniert.
    Ich habe den Bindestrich nach dem Buchstaben eingefügt, weil ich es so von meinem Vorgesetzten verstanden habe, aber vielleicht ist der auch nicht so wichtig.


    Du lagst mit Deiner Vermutung richtig: Das ist genau das was ich gesucht habe.

    Danke und Danke im Voraus für weitere Hilfe.

    Grüße
    Johanne

    Edit: Ich habe den Bindestrich nach dem Buchstaben wieder entfernt und nun zählt er wieder, wie ich es wünsche.
    Außerdem funktioniert das andere nun auch mit der Änderung.
    Ich danke also für die Hilfe.
    Jetzt ist nur noch das mit dem Jahr offen, da ich da nicht weiß wie ich das ausprobieren kann, ohne die Jahreszahl an meinem Arbeitspc zu ändern. (Zuhause würde ich das machen, aber nicht auf der Arbeit)

    Wenn du dafür noch eine Idee hast, wäre ich dankbar.
    Vielleicht kann man die Code dafür auch kurzzeitig ändern um es auszuprobieren.

    DANKESCHÖN für die Hilfe

    VG Johanne

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Johanne“ ()

    Hallo Johanne,

    schön, dass ich richtig lag und Dir helfen konnte.

    Also folgendes (Mein Code):

    Die Zeilen 3-5 kannst Du beliebig Deiner abzuspeichernden Felder erweitern. Diesen Weg habe ich eigentlich nur der Übersichtshalber gewählt.

    Zeile 6-8 sind für das Zählen zuständig

    Zeile 13-15: Hier werden den in Zeile 3-5 festgelegten Variablen die einzelnen Eingabefelder übergeben

    Zeile 20-22, 57-59: Hier werden die Werte in die Tabelle geschrieben.

    Wenn Du jetzt Deine Schreibweise von R20-0001 auf R-20-0001 anpassen willst/musst, dann sind die Zeilen

    20, 43, 45, 57 die, die Du anpassen musst.

    Deine neue Zeile 57 ist soweit erst einmal richtig

    Schau Dir mal die o. g. vier Zeilen genau an.

    Die Lösung liegt in dem MID-Befehl. Dieser Befehl dient dazu, einen Wert/Text von einem Zeichen bis zu einem Zeichen zu generieren.
    Bsp: Aus 'Hallo Welt' wird mit MID("Hallo Welt", 3, 5) = "llo W". 3 ist also das 3te Zeichen von links und dann 5 Zeichen weiter.

    Die Zeilen 20, 43, 45, 57 müssten also für die Schreibweise R-20-0001 wie folgt lauten

    20: Sheets("Tabelle1").Range("A2").Value = Mid(StandortWahl, 1, 1) & "-" & Format(Now, "YY") & "-0001"

    43: If Mid(AktZeilenwert, 3, 2) = Format(Now, "YY") Then

    45: AktLfdNr = Mid(AktZeilenwert, 6, 4)

    57: Sheets("Tabelle1").Range("A" & zeile).Value = Mid(StandortWahl, 1, 1) & "-" & Format(Now, "YY") & "-" & Format(LetzteInventarnrStandort + 1, "0000")

    Wichtig: Es zählt somit jedes Zeichen, also auch die Leerzeichen.

    Willst Du z. Bsp.: R-2020-0001 stehen haben, dann musst Du

    1.: Alle YY in YYYY ändern (betrifft hier alle Format-Befehlszeilen)
    2.: Die Zeilen 43 und 45 müssen dann natürlich auch angepasst, Zeile 20 und 57 werden durch ändern auf YYYY eh schon geändert und stellen somit nur die richtige Darstellung sicher.

    Probier am besten einfach mal ein bisschen aus, nach dem es geklappt hat oder nutze den Einzelschrittmodus bzw. das Direktfenster

    Einzelschrittmodus geht wie folgt:
    Am besten drückst Du auf der Sub/Function - Zeile die F9 Taste. Dann wird die gerade aktuelle Zeile rot hinterlegt. Noch einmal F9 und sie ist wieder normal.
    Eine rote Zeile hält an dieser Stelle immer den Code an.
    Man kann nun mit F8 Zeile für Zeile weitergehen. Die entsprechenden Ergebnisse wie bspw. in Zeile 13 kann man dann sehen, wenn man in Zeile 14 und ff. sich befindet. Geh einfach mal mit der Maus auf Standortauswahl und schau was Dir angezeigt wird.

    Direktfenster:
    Drücke mal als erstes STRG+G. Es erscheint unter dem Code ein neues Fenster Direktbereich.
    Hier kann man mit Eingabe '? Standortwahl' + ENTER-Taste sich den Wert von Standortwahl auch anzeigen lassen
    Das ? ist also der Befehl 'Zeige mir' und gibt den aktuellen Wert der dahinterstehenden Angabe aus.

    Zeile 57 kannst Du so leider nicht kpl. markieren und Dir anzeigen lassen, aber '? Sheets("Tabelle1").Range("A" & zeile).Value' oder '? Mid(StandortWahl, 1, 1) & "-" & Format(Now, "YY") & "-" & Format(LetzteInventarnrStandort + 1, "0000")'
    funktionieren da hin gehend super.

    Letzters ist hier ideal, um mal so ein paar Dinge zu testen. Dazu einfach im Direktfenster die Eingabe verändern und sehen was dabei rauskommt.
    Zeile 43 und 45 sind für Dich hier natürlich die aller wichtigsten, wenn du Zeile 20 und 57 änders.
    Probier einfach mal etwas mit den Zeilen aus im Direktfenster.

    Aber Wichtig:
    Das ganze liefert nur Werte, wenn Du den Code mit F9 anhälst und mit F8 über die entsprechenden Zeilen drüber bist. Denn nur dann haben die Stellen Werte.

    Wegen dem Jahr:
    Versuch mal mit ein paar Testdaten (also manuell eingeben) das Jahr nicht auf das aktuelle zu setzen. Es sollten ein paar von 2019 und ein paar von 2021 dabei sein, aber keines von diesem Jahr.
    Wenn er dann wieder bei x-20-0001 anfängt, dann ist alles richtig. Auch wenn Du die Daten mal nach etwas anderem sortierst, dann sollte immer die nächste richtige Nummer kommen. Damit hast Du eigentlich das Ganze auch getestet.
    Natürlich müssen alle Inventarnummern am Schluss ein Format haben.

    Ich hoffe, dass Du mit meinen Erklärungen klar kommst.

    Gruß

    Volker

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Volker Bunge“ ()

    Hallo Volker,

    WOW. das ist sehr ausführlich!
    Aber ich finde es Klasse, dass Du Dir die Zeit genommen hast.
    Großes DANKE.


    Die Lösung liegt in dem MID-Befehl. Dieser Befehl dient dazu, einen Wert/Text von einem Zeichen bis zu einem Zeichen zu generieren.
    Bsp: Aus 'Hallo Welt' wird mit MID("Hallo Welt", 3, 5) = "llo W". 3 ist also das 3te Zeichen von links und dann 5 Zeichen weiter.


    Den Befehl kannte ich nicht und hatte mich schon gewundert, warum Du hinter StandortWahl eine 1,1 stehen hattest. Jetzt fällt der Groschen....
    Danke :) :thumbsup:
    Lernen macht Spaß!

    Ich werde das mal ausprobieren und Dir dann eine Rückmeldung geben. (Da ich auf 2 halbe Stellen sitze ist es manchmal schwierig zu planen, wann ich an der Maske weiterarbeiten kann. Heute konnte ich mir die Zeit nehmen, da auf der 2. Stelle weniger zu tun war. Das kann sich aber täglich ändern.)

    Ja ich denke, dass ich mit deinen Erklärungen klar komme. Ansonsten frag ich einfach.

    :)
    Gruß
    Johanne
    Hallo Johanne,

    kein Problem.

    Bin ja mal selbst froh, dass ich helfen konnte, sonst Frage ich hier nur (allerdings bei VB.Net).

    Programmiere schon seit 1984 und kann noch lange nicht alles.

    Also nicht aufgeben und dran bleiben. Es erleichtert am Ende das Leben ungemein. Nur halt bis dahin, ist es teilweise ein langer steiniger Weg.

    Gruß

    Volker

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Volker Bunge“ ()

    Hallo Volker,
    ich hatte in den letzten 2 Tagen Zeit mich um die Programmierung zu kümmern.

    Die Zeilen 20, 43, 45, 57 habe ich geändert und sie funktionieren. Das hat mich sehr gefreut. (War anhand deiner Anleitung gut umzusetzen.)

    Was mich allerdings irritiert ist, dass ich beim Jahr "irgendetwas" eintragen kann, es kommt immer R-20-0001 (oder fortlaufend), aber das liegt vermutlich daran, das ich dem Programm das so gesagt habe und weil ich das Jahr "nicht" ändern kann.
    Ich habe davon Screenshots gemacht, ich hoffe, du kannst es sehen.

    Ansonsten gibt es für mich noch die Frage, ob man die Nummerierung auf einem "Extrablatt" wie z.B Tabelle 2 notieren kann.
    Ist halt die Frage, wie Sinnvoll es ist, wenn man das vielleicht auch herausfiltern kann.

    Außerdem habe ich festgestellt, wenn ich das Jahr "manuell" ändere, dann fängt er wieder von "vorne" an, was nicht schlecht ist, besonders, wenn ich noch etwas aus dem letzten Jahr nachtragen muss.

    Danke in jedem Fall für Deine Hilfe.

    Grüße Johanne

    P.S. kennst du gute VBA Bücher um vielleicht etwas nachzulesen, was man in den verschiedenen Tutorials Videos vielleicht nicht findet. Danke
    Dateien
    Hallo Johanne,

    das mit dem Jahr das da immer 20 (für 2020) raus kommt liegt an dem Now im Format-Befehl (Zeile 20, 43 und 57).

    Now = aktuelles Datum bzw. Uhrzeit (Bsp. 23.09.2020 19:45:45)

    YY = Jahr in zweistelliger Darstellung

    Format(Now, "YY") bringt also das aktuelle Computerdatum/Uhrzeit in der Form Jahr zurück. Also hier 20

    Schreibst Du bspw. Format(now,"YYYY") erhälst Du 2020. Schau einfach mal bei Format in der Hilfe nach, dort gibt es noch einige andere Buchstaben für Tag. Monat, Stunde. Minute, Sekunde). Hiermit lassen sich auch bestimmte Schreibweisen realisieren.

    Möchtest Du also das Jahr variable halten, dann fügt mal folgende Zeilen ein

    3a: Dim ArtikelJahr as Date
    13a: ArtikelJahr = "01.01." & TBox_Jahr.Text ' Erstellt aus der Eingabe 2021 ein festes Datum 01.01.2021. Durch diesen kleinen Trick ist es dann immer ein Datum.
    Wenn die Eingabe tatsächlich ein Datum ist, dann einfach ArtikelJahr = TBox_Jahr.Text eingeben.

    22a: Sheets("Tabelle1").Range("D2").Value = ArtikelJahr
    59a: Sheets("Tabelle1").Range("D" & zeile).Value = ArtikelJahr

    (Wenn Du die Variante mit dem 01.01. nimmst, dann ändere 22a und 59a in
    22a: Sheets("Tabelle1").Range("D2").Value = format(ArtikelJahr,"YYYY")
    59a: Sheets("Tabelle1").Range("D" & zeile).Value = format(ArtikelJahr,"YYYY")
    dann wird nur das Jahr in die Liste eingetragen und nicht der 01.01.)

    Tausche dann noch alle 'Now' durch 'ArtikelJahr'

    Damit sollte es eigentlich klappen.

    Einziges Problem. Du müsstest sicherstellen, dass es auch immer eine Zahl (2020) oder ein Datum ist.

    Sag mir erst einmal noch wie das Jahr bei der Eingabe sein soll (also 2020 oder tt.mm.jjjj).

    Dann noch eine Frage: Wenn Du nur den Tag eingeben würdest, welcher Monat soll es dann sein?

    Ich Frage deswegen, weil ich für folgende Konstellation schon eine Lösung habe.

    Bsp:

    Heute ist der 23.09.2020.
    Eingabe 1 - 23 ist immer der aktuelle Monat und das Jahr.
    Eingabe 24-31 ist immer der Monat davor/Jahr davor also hier 25.08.2020. Währe heute der 23.01.2020 dann wäre bei Eingabe 25 das Ergebnis 25.12.2019.

    Ein anderes Datum kannst Du natürlich auch eingeben, musst dafür aber die Punkte setzen

    Für die Eingabe 0108 = 01.08.2020 (also das aktuelle Jahr) gebe es auch eine Möglichkeit.

    Beim Datum ist halt das ewige Punktesetzen doch recht nervig.

    Teile mir einfach mal Deine Schnelleingabewunsch für das Datum mit und ich schaue mal ob mir was einfällt.

    Zu 'Ansonsten gibt es für mich noch die Frage, ob man die Nummerierung auf einem "Extrablatt" wie z.B Tabelle 2 notieren kann.
    Ist halt die Frage, wie Sinnvoll es ist, wenn man das vielleicht auch herausfiltern kann.' hätte ich noch eine Frage: Wie meinst Du das?

    Zu der Bücherfrage: Habe zwar ein paar Programmierbücher aber leider alle nur für VB.Net und Datenbankprogrammierung. Da schaue ich aber auch nur selten rein. Bin da ehr der Typ Forum, Youtube und Internet Suche. Das liegt aber auch ehr daran, dass meine Probleme meist schon höherem Nivau sind.

    Gruß

    Volker
    Hallo Volker,

    es tut mir leid, wenn ich mich unglücklich ausgedrückt habe.
    Ein Datum soll es nicht werden, es reicht völlig aus, wenn das Jahr dort in der Nummerierung auftaucht. (Wichtiger war meinem Vorgesetzten, dass der Buchstabe dabei ist, um die jeweiligen Standorte auseinanderhalten zu können. Und das wurde mit Deiner Hilfe ja erfüllt.)

    Ich habe es mit dem "langen" Datum ("YYYY") ausprobiert, aber das ist zu lang und nicht gut. Da bleibe ich lieber bei der Variante R-20-0001.
    Ich habe auch das "now" weggenommen und dort "21" eingetragen und dann nimmt er auch nur die "21". Sah auch interessant aus und auch dass er die "21" beibehielt, als ich das "now" wieder hingeschrieben hatte. Somit weiß ich dass es geht und wie ich es im Bedarfsfall erneut ändern kann.

    Zu 'Ansonsten gibt es für mich noch die Frage, ob man die Nummerierung auf einem "Extrablatt" wie z.B. Tabelle 2 notieren kann.
    Ist halt die Frage, wie Sinnvoll es ist, wenn man das vielleicht auch herausfiltern kann.' hätte ich noch eine Frage: Wie meinst Du das?


    Wenn ich den Standort ausgewählt habe und das Programm nach klicken auf den Button Eingabe, meine Daten übernimmt, ob es auch möglich ist, nur das: "R-20-0001" auf einem Extrablatt zu notieren, damit man schnell sehen kann, welches die letzte Nummer ist.
    Aber das ist wahrscheinlich Unsinn, da man durch den (vorhandenen) Filter, ja auch die Nummern herausfiltern kann und es dann auch sehen würde.

    Wegen den Büchern: Ja das Forum, YouTube und Google haben mir schon so manche Frage beantwortet, dem kann ich nur zustimmen. Ich hatte gefragt, weil es manchmal doch ganz interessant ist, etwas aus einem Buch zu lesen, falls man kein Internet zur Verfügung hat.

    Viele Grüße
    Johanne
    Hallo Johanne,

    wenn Du nach dem Jahreswechsel noch für das alte Jahr Daten eintragen willst, dann musst Du wohl oder übel das Jahr dauerhaft in die Eingabemaske packen.

    Du kannst aber über Private Sub UserForm_Initialize() das Jahr einfach auf das aktuelle Jahr voreinstellen.
    TBox_Jahr.Text = format(now,"YYYY") = 2020 (sieht optisch besser so aus, natürlich geht auch YY = 20).
    Die Übergabe an meinen Code müsstest Du dann wie zu Letzt beschrieben mit abspeichern/übergeben.
    Damit kannst Du schnell die Artikel erfassen und auch mal schnell das Jahr wechseln.

    Einen Eingriff in den Code macht grundsätzlich keinen Sinn, da solch ein Code erstens nicht für jedermann ist und zweitens auch nicht für das permanente Ändern während der Eingabe gedacht ist.
    Zum Ausprobieren bei der Entwicklung durch den Entwickler (also Dich) ist das natürlich was anderes.
    Grundsätzlich solltest Du aber mit möglichst wenig festen Werten arbeiten.Dadurch kannst Du einmal dem Benutzer die Chance geben, variable zu bleiben (Bsp. MwSt-Satz) und zum anderen ist die Pflege von solchen Werten leichter möglich (Ich denke da an eine Passwort geschützte Eingabemaske, in der solche Werte dann nur von berechtigten Personen geändert werden können).
    (Hängt natürlich immer vom jeweiligen Projekt ab und den Wünschen)

    Wegen der Anzeige der letzten Eingaben:
    Man könnte bspw. eine Sub schreiben, die dann für das aktuelle Jahr die höchsten Nr. ausgibt.
    Die Anzeige würde ich dann in die Eingabemaske packen. So würde man da gleich alles sehen.
    Bei Interesse, könnte ich kurz mal was schreiben.

    Zu den Büchern:
    Geh doch einfach mal in eine Buchhandlung und schau dort mal nach entsprechenden Büchern. Es gibt doch die Bücherei "xxx für Dummies", vielleicht ist das ja was. (Bitte nicht falsch verstehen)
    Manche Bücher sind zwar inhaltlich gut, aber vielleicht doch nicht was für Anfänger. Da muss jeder selbst schauen, wo mit er am besten klar kommt.
    Gerade die dicken Bücher von Markt&Technik (1000 Seiten und mehr) überfordern einen recht schnell. Wenn dann noch viel Fach-Chinesisch dazu kommt, ist recht schnell Ende im Gelände.
    Auch das mit den Englischkenntnissen kann jemanden überfordern und da ist es manchmal schwer, auf den richtigen Befehl für die Suche zu kommen.

    Gruß
    Volker