Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
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

Ausgabe in anderen Sheet und eine Zeile weiterspringen

Ausgabe in anderen Sheet und eine Zeile weiterspringen
26.03.2024 09:36:16
teacher79
Guten Morgen.
Ich habe in verschiedenen Beiträgen eigentlich die Lösung gefunden, aber ich bekomme die verschiedenen Schnippsel nicht zusammen, dass es funktioniert.

Es geht darum, ein Anwesenheitsblatt mit 10er-System zu erstellen, welches beim Scan eine Anwesenheit heruntersetzt. Jeder Teilnehmer hat eine ID-Karte mit einem Barcode, der abgescannt wird.

Meine Datei enthält 3 Sheets.
1: Scan
2: Anwesenheiten
3: Berechnungen

In 2 (Anwesenheiten) sind alle teilnehmenden Schüler in eine erstellte Tabelle eingetragen, ein Autofilter ist gesetzt und folgender CODE läuft im VBA:

Direkt auf dem Sheet Anwesenheiten:


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Barcode2")) Is Nothing Then Call BarcodeSuchen
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("Barcode2")) Is Nothing Then Call BarcodeSuchen End Sub Sub BarcodeSuchen() 'Blattschutz aufheben shAnwesenheiten.Unprotect 'Autofilter setzen shAnwesenheiten.ListObjects("tblAnwesenheiten").Range.AutoFilter field:=2, Criteria1:="(" & Range("Barcode2").Value & ")" 'Blattschutz setzen shAnwesenheiten.Protect End Sub


Im Modul 1:


Sub BarcodeSuchen()
'Blattschutz aufheben
shAnwesenheiten.Unprotect

'Autofilter setzen
shAnwesenheiten.ListObjects("tblAnwesenheiten").Range.AutoFilter field:=2, Criteria1:="(" & Range("Barcode2").Value & ")"

'Blattschutz setzen
shAnwesenheiten.Protect

End Sub

Das Tabellenblatt ist geschützt, ledigich das Feld E4 ist ungeschützt, hier wird immer der gescannte Barcode eingeschrieben.
Das klappt auch super. Wenn ich eine Karte abscanne, wird mir in der Tabelle nur der Datensatz des entsprechenden Teilnehmers angezeigt.

Nun soll aber folgendes passieren:
Wenn ich den Teilnehmer abscanne, soll nicht nur der Datensatz innerhalb des gleichen Sheet angezeigt werden, sondern zusätzlich auch in dem Sheet 1 (Scan) der Barcode eingetragen und dauerhaft hinterlegt werden. Bei jedem neuen Scann soll also in die nächste darunterliegende Zelle der neue Scan eingetragen werden. Sodass ich mit =zählenwenn und entsrechenden Formeln im Datensatz immer die aktuelle Anzahl an möglichen Terminen angezeigt bekomme. Es braucht/soll kein Abgleich stattfinden, da gleiche Codes nicht überschrieben werden sollen.
Ich weiß, dass ich auch direkt beim Scannen im VBA den neuen aktuellen Stand ausgeben lassen kann, aber ich würde es gerne über mir bekannte Formeln errechnen lassen, da ich auf meinem Sheet Nr.3 (Berechnungen) auch neue Käufe einer 10erKarte hinterlegen kann, damit wieder weitere 10 Einheiten dem Kunden gutgeschrieben werden.

Ich muss meinen vorhanden Code im Worksheet_Change also erweitern, damit der eingescannte Code automatisch in Sheed1 in die nächste freie Zelle eingetragen wird.

Bitte helft mir, ich bin seit fast einer Woche am googlen und das Forum am durchlesen, aber für meinen Fall finde ich nichts passendes.



6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausgabe in anderen Sheet und eine Zeile weiterspringen
26.03.2024 09:54:06
ralf_b
"aber für meinen Fall finde ich nichts passendes."

das könnte daran liegen das VBA auf den speziellen Fall zugeschnitten wird. Wobei dein Anwendungsfall: Letzte belegte Zeile/Zelle bzw. erste freie Zelle ermitteln allein in dieser Woche hier mehrfach behandelt wurde. Und wir sind erst bei Dienstag. z.b Thread: Eingabe per Barcode-Scanner

wozu benötigst du den Autofilter?
AW: Ausgabe in anderen Sheet und eine Zeile weiterspringen
26.03.2024 10:22:25
teacher79
Hi Ralf, vielen Dank.
Das mit dem Barcodescanner habe ich gefunden und auch versucht einzubauen. Allerdings komme ich mit der Kombi nicht klar: Zum einen wird der Datensatz in Sheet 2 Angezeigt - soll aber nun druch gleichen Scan in Sheet 1 eingetragen werden. Ich bekomme es nicht hin.

Den Autofilter deshalb, damit auf dem Anwesenheitssheet nicht die komplette Tabelle angezeigt wird, sondern immer nur der jeweilige Teilnehmer, der gerade gescannt wurde. Denn der Anwesenheitssheet ist quasi auch die Maske, die der Teilnehmer sieht (andere Einträge gehen ihn ja nichts an)

Optimaler Weise bleibt die Ansicht auf auf Sheet 2, während auf Sheet 1 eingetragen wird.
Hier mal die Beispieldatei

https://www.herber.de/bbs/user/168322.xlsm
Anzeige
AW: Ausgabe in anderen Sheet und eine Zeile weiterspringen
26.03.2024 13:22:22
ralf_b
https://www.herber.de/bbs/user/168331.xlsm

ich hab dir deine Datei umgekrempelt.
Die Datentabelle ist nicht mehr auf dem sichtbaren Blatt.
Auf dem sichtbaren Blatt wird nun der gefundene Name des Käufers/Nutzers angezeigt. 1 x als Formelvariante und einmal nur als Wert direkt per vba
in der Datentabelle sind neue Spalten hinzugekommen. Dort werden per vba beim Kauf einer 10er karte oder beim Eintritt =Nutzung die Werte hochgezählt.
Als sichtbaren Abschluss einer Buchung gibt es ne Messagebox.
Um den Code etwas übersichtlicher zu gestalten habe ich die Suche nach dem Nutzer in eine Funktion ausgelagert. Darin werden auch die Werte in das sichtbare Blatt geschrieben. Diese Funktion gibt wahr oder falsch zurück. Der Rückgabewert wird mit einer If Bedingung geprüft um die Buchungen zu machen oder eben nicht.
Ich gehe davon aus das die Klammer um den Barcode ein Prä- und Suffix sein soll. Meist ist das ja ein Sternchen. Es wäre besser du stellst deinen Scanner so ein das nur der reine Barcode ohne die Prä- und Suffixe ausgegeben wird. Es ist umständlich die Klammern mal zu berücksichtigen und mal nicht.

Das Scanblatt brauchst du nicht mehr, es sein denn da passiert eigentlich noch mehr.

have fun
Anzeige
AW: Ausgabe in anderen Sheet und eine Zeile weiterspringen
26.03.2024 15:24:33
teacher79
Ralf, das ist ja mal super von Dir. Mega, vielen Dank

Bin gerade am Testen.
Kann ich Zelleninhalte ohne Probleme löschen oder verändern? Ich muss den Teilnehmern ja nochmal Namen geben, das wollte ich eben so nicht online stellen.
Und das Zeite Anzeigefenster in G-J, welche Funktion steckt dahinter, denn da passiert nichts drin.

Vielen Lieben Dank und Grüße

AW: Ausgabe in anderen Sheet und eine Zeile weiterspringen
26.03.2024 15:57:39
teacher79
Ahhh..und noch eine Frage/kleine Änderung. wo im VBA kann ich ändern, dass er mir in der Datensatzausgabe nicht die "Nutzungen" ausgibt,die ja hochgezählt werden, sondern die "offene" (Restnutzungen inkl. Käufe)...Sonst fragt der Teilnehmer bei jedem Mal: Wie oft kann ich noch :-)

Wenn jetzt die Barcodefunktion zum Kauf einer 10er-Karte noch auf dem Tabellenblatt 2 (mit den tatsächlichen Daten) wäre, dann hätte ich zu 100 % meine Lösung die ich brauche.

Für diese Arbeit würde ich dir gerne auch eine Spende "schicken" :-)
Anzeige
AW: Ausgabe in anderen Sheet und eine Zeile weiterspringen
26.03.2024 18:42:24
ralf_b
sorry, ich war im "Real Life" wie man so schön sagt.

Das du im Sicht-Blatt anzeigen lassen willst, liegt ja bei dir. Ich wollte nur ein Beispiel zeigen.
in G4 steht folgende Formel =XVERWEIS(Barcode2;tblAnwesenheiten2[Barcode];tblAnwesenheiten2[[Kurs]:[Nutzungen]];"Keine Daten")
nur da um Barcode2 noch die Klammern stehen. Und das Blatt ist ja geschützt also Blattschutz weg und du kannst dir das genauer ansehen.
Grundsätzlich würde ich keine Formeln auf einer für Kunden sichtbaren Oberfläche anzeigen lassen. War ein erster Ansatz.

in D8 steht =tblAnwesenheiten2[[#Kopfzeilen];[Kurs]:[Nutzungen]]
die Spaltenbeschriftungen können auch fest eingetragen werden.

[Kurs]:[Nutzungen] das ist quasi der Kopfbereich in der Datentabelle. das funktioniert aber nur so hübsch wenn der Bereich zusammenhängend ist.

hier steht aus welcher Spalte der Wert in welche Zielzelle geschrieben wird. Ist doch selbsterklärend ,oder?
shAnwesenheiten.Range("E9") = .ListRows(result).Range(.ListColumns("Name").Index)

für Spenden schreib mich an: *ralf_b*(*at*)*wolke7.net* Sternchen weglassen


Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige