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

Registrierkasse

Forumthread: Registrierkasse

Registrierkasse
19.01.2021 07:31:20
Udo
Hallo !
Ich habe mir dank eurer Hilfe hier nun eine kleine Registrierkasse gebastelt.
Eigentlich bin ich mit dem Ergebnis sehr zufrieden, aber es gibt natürlich immer kleinigkeiten die man dann verfeinern will.
Da meine persönlichen Excel Kenntnisse vorallem mit VBA nicht so groß sind hoffe ich wieder auf eure Hilfe.
Also Registrierkasse funktioniert, man kann über den Button NEUEN GAST anlegen immer ein Tabellenblatt hinzufügen es benennen usw. passt alles, ich habe dann eine Gesamtübersicht vom täglichen Umsatz passt auch. Die Registrierkarten färben sich Grün wenn bezahlt. Rot wenn die Rechnung noch offen ist.
Wäre es auch möglich das sich ein Tabellenblatt automatisch anlegt, wo man alle Gäste übersichtlich sieht mit dem Betrag und dem Status ob Rechnung noch offen oder nicht. Ganz fein wäre natürlich, wenn man den Gast gleich anklicken könnt um auf sein Tabellenblatt zu springen.
Sind so Spinnereien die ich gerne hätte
mit besten Dank im Vorraus
https://www.herber.de/bbs/user/143098.xlsm
LG Udo
Anzeige

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Registrierkasse
19.01.2021 08:12:38
Klaus
Hallo Udo,
kannst du damit etwas anfangen?
Sub AlleGaeste()
Dim ws As Worksheet
Dim z As Long
z = 2
Sheets.Add
Cells.ClearContents
For Each ws In Worksheets
Select Case ws.Name
Case "Gesamt", "Vorlage", ActiveSheet.Name
Case Else
Cells(z, 1).Value = ws.Name
z = z + 1
ActiveSheet.Hyperlinks.Add Anchor:=Cells(z, 1), Address:="", SubAddress:=ws.Name & " _
!A1", TextToDisplay:=ws.Name
End Select
Next ws
Range(Cells(2, 2), Cells(z, 2)).FormulaR1C1 = "=INDIRECT(RC[-1]&""!F31"")"
Range(Cells(2, 3), Cells(z, 3)).FormulaR1C1 = "=INDIRECT(RC[-2]&""!H2"")"
Range("A1").Value = "Name"
Range("B1").Value = "Betrag"
Range("C1").Value = "bezahlt?"
End Sub

Anzeige
AW: Registrierkasse
19.01.2021 08:48:46
Udo
Vielen Dank für deine ANtwort
NUr wo muss ich das einfügen?
LG Udo
AW: Registrierkasse
19.01.2021 09:33:32
Klaus
In ein Modul, und laufen lassen. Erstellt ein neues Sheet (sheets.add) und fügt dort alles ein was du willst.
IM Realbetrieb wirst du sheets.add wahrscheinlich wieder rausnehmen, aber im Ursprungspost war "erstellt ein neues Sheet" gefordert :-) damit du das einfach rauskommentieren kannst, folgt direkt danach das "cells.clearcontents" ... pass blos auf dass du das Makro nicht im falschen Blatt ausführst, sonst ist alles weg ;-)
LG,
Klaus
Anzeige
AW: Registrierkasse
19.01.2021 09:40:02
Udo
Da kommt eine Fehlemeldung "Fehler beim Kompilieren:
Sytntaxfehler
ActiveSheet.Hyperlinks.Add Anchor:=Cells(z, 1), Address:="", SubAddress:=ws.Name & " _
!A1", TextToDisplay:=ws.Name
Diese Zeile ist rot?
LG Udo
AW: Registrierkasse
19.01.2021 10:18:03
peterk
Hallo
Das ist EINE Zeile (die Forumssoftware hat die Zeile umgebrochen!)

Anchor:=Cells(z, 1), Address:="", SubAddress:=ws.Name & "!A1", textToDisplay:=ws.Name

Anzeige
AW: Registrierkasse
19.01.2021 10:24:35
Udo
Ok Danke
Ja funktioniert, vielen Dank.
Ist aber nicht ganz so wie ich mir das vorgestellt habe, wenn ich auf den Gastnamen klicke das ich auf das Tabellenblatt springe kommt"Der Bezug ist ungültig" und am liebsten wäre mir, ich weiß nicht ob das überhaupt möglich ist das sich die Tabelle quasi in Echtzeit aktualisiert
Trotzdem Vielen Dank
LG Udo
Anzeige
AW: Registrierkasse
19.01.2021 11:30:30
Rudi
Hallo,
ActiveSheet.Hyperlinks.Add Anchor:=Cells(z, 1), Address:="", SubAddress:="#'" & ws.Name & "'!A1", TextToDisplay:=ws.Name

das sich die Tabelle quasi in Echtzeit aktualisiert
Dann ruf den Code doch in Blatt_erstellen auf.
Gruß
Rudi
Anzeige
AW: Registrierkasse
19.01.2021 17:17:08
Udo
Danke
LG Udo
AW: Registrierkasse
19.01.2021 17:16:42
Udo
Betsen Dank
Perfekt
LG Udo
Anzeige
AW: Registrierkasse
24.01.2021 19:40:52
Udo
Hallo nochmal
Das ist Perfekt einziges Problem was mir aufgefallen ist, wenn ich den "neuen Gast" z.b abbreche kommt
Laufzeitfehler
Index außerhalb des gültigen Bereichs
'*** Gast in Gästeübersicht einfügen *****
intGastZeile = Sheets("Gast-Übersicht").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("Gast-Übersicht")
.Cells(intGastZeile, 1).Value = strBlattname
.Cells(intGastZeile, 2).Value = Sheets(strBlattname).Range("F31").Value
.Cells(intGastZeile, 3).Value = Sheets(strBlattname).Range("H2").Value
End With
'*** Ende ***
End Sub
Wie gehört der Code geändert das dies nicht passiert?
Vielen Dank
LG Udo
Anzeige
AW: Registrierkasse
24.01.2021 22:45:27
ralf_b
Hallo Udo,
beim Vorbeischlendern hab ich mir dein Projekt angesehen und ein paar Vereinfachungen für dich.
erstmal das Blatt erstellen
Public Sub Blatt_erstellen()
Dim ws As Worksheet, strBlattname As String, intGastZeile As Integer
Application.ScreenUpdating = False
If vbYes = MsgBox("Neuen Gast anlegen?" & _
Chr(13) & "" & Chr(13) & _
"Achte das die Vorlage immer leer ist!" & _
Chr(13) & "" & Chr(13) & _
"© UdPa", vbYesNo) Then
strBlattname = InputBox("Bitte Gast anlegen erfassen.", "Neues Tabellenblatt")
If strBlattname = vbNullString Then Exit Sub
strBlattname = LegalSheetName(strBlattname)
For Each ws In ThisWorkbook.Worksheets
If ws.Name = strBlattname Then
MsgBox "Das Blatt " & strBlattname & " existiert bereits."
Exit Sub
End If
Next ws
Worksheets("Vorlage").Copy after:=Worksheets(Sheets.Count)
Set ws = Worksheets(Sheets.Count)
With ws
.Unprotect "UdPa040674"
.Name = strBlattname
.Range("H2") = "offen"
.Protect "UdPa040674"
End With
'*** Gast in Gästeübersicht einfügen *****
With Sheets("Gast-Übersicht")
intGastZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(intGastZeile, 1).Value = ws.Name
.Cells(intGastZeile, 2).Value = ws.Range("F31").Value
.Cells(intGastZeile, 3).Value = ws.Range("H2").Value
End With
'*** Ende ***
End If
Set ws = Nothing
End Sub
und dann dein modul2, das kansnt direkt importiern. habe die app_x und weiss:x auf je eine sub reduziert das dürfte für dich einfacher werden.
https://www.herber.de/bbs/user/143297.txt
Anzeige
AW: Registrierkasse
24.01.2021 23:46:38
Udo
Vielen Dank
Nur leider jetzt übernimmt es nicht den namen den ich eingebe sondern immer eine kopie der Vorlage
kommt Vorlage(1), Vorlage(2) usw. nicht so wie vorher der Name den ich den GAst vergebe ansonsten wäre es so super
Danke LG
AW: Registrierkasse
25.01.2021 06:53:30
ralf_b
ja das hatte ich auch festgestellt. Das neue Blatt wurde unsichtbar (ausgeblendet) erstellt. Durch maunelles Einblenden hat die Erstellung dann wieder hingehauen. Ich habe leider keine Erklärung warum das so ist. ICh habe es gerade nochmal getestet und es läuft wie gedacht.
gruß
rb
Anzeige
AW: Registrierkasse
25.01.2021 10:00:23
Udo
Danke für deine Mühe
Nur jetzt zählt es wieder bei Tabellenblatt "Gesamt" nicht mehr hmm
LG Udo
AW: Registrierkasse
25.01.2021 16:07:54
ralf_b
oh, und wie wird "Gesamt" gefüllt? Weist du das überhaupt? Im Code jedenfalls nicht. Also hat der Code keine Schuld. Prüfe die hinterlegte Formel in Gesamt!spalte D
Mir ist aufgefallen das die Vorlage irrtümlich auch als Eingabe genutzt werden kann, da sie ja so einladend präsent ist zu Beginn. Ich schlage vor diese Tabelle auszublenden und nur als Kopiervorlage zu nutzen. Und in den Gasttabellen wird doch sicherlich kein Button "Neuer Gast" benötigt, oder? Sowie die Rechnungssumme nicht ganz nach unten wohin man erstmal hinscrollen muß.
gruß
rb
Anzeige
AW: Registrierkasse
25.01.2021 16:30:56
Udo
Danke für deine Mühe
Warum auch immer hat es mir das Tabellenblatt "Tabelle31" darum funzt es nicht.
LG Udo
AW: Registrierkasse
25.01.2021 16:37:02
Udo
Der Button neuer Gast ist gut das er auf jeder Seite ist kann man immer direkt einen neuen Gast eintragen und muss nicht extra wieder auf ein bestimmtes Tabellenblatt, ja den Rechnungsbetrag kann i höher legen da wirst schon recht haben. Ich bin eigentlich sehr zufrieden mit dem Ergebnis.
Es muss trotzdem am neuen Code liegen sobald ich zurücksetze is wieder der neue gast ausgeblendet, einmal einblenden dann gehts wieder aber die Tabelle 31 ist futsch hmmm
LG Udo
Anzeige
AW: Registrierkasse
25.01.2021 16:38:22
ralf_b
dann schick halt mal die datei .
AW: Registrierkasse
25.01.2021 19:41:30
Udo
Vielen Dank für eure Hilfe und Mühe
Ich habs jetzt selbst nach meinen Wünschen zusammengebracht.
LG Udo
Anzeige
AW: Registrierkasse
25.01.2021 19:53:46
ralf_b
schön, hast du meine Antwortmail gelesen?
gruß
rb
AW: Registrierkasse
25.01.2021 20:46:51
Udo
Danke habs gerade gesehen
Perfekt auch
Vielen Dank
LG
;
Anzeige

Infobox / Tutorial

Registrierkasse in Excel: So erstellst du eine Übersicht mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne dein bestehendes Projekt.

  2. Öffne den VBA-Editor: Drücke ALT + F11.

  3. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine Datei)", wähle Einfügen und dann Modul.

  4. Kopiere den VBA-Code von Klaus, um eine Übersicht aller Gäste zu erstellen:

    Sub AlleGaeste()
       Dim ws As Worksheet
       Dim z As Long
       z = 2
       Sheets.Add
       Cells.ClearContents
       For Each ws In Worksheets
           Select Case ws.Name
               Case "Gesamt", "Vorlage", ActiveSheet.Name
               Case Else
                   Cells(z, 1).Value = ws.Name
                   z = z + 1
                   ActiveSheet.Hyperlinks.Add Anchor:=Cells(z, 1), Address:="", SubAddress:=ws.Name & "!A1", TextToDisplay:=ws.Name
           End Select
       Next ws
       Range(Cells(2, 2), Cells(z, 2)).FormulaR1C1 = "=INDIRECT(RC[-1]&""!F31"")"
       Range(Cells(2, 3), Cells(z, 3)).FormulaR1C1 = "=INDIRECT(RC[-2]&""!H2"")"
       Range("A1").Value = "Name"
       Range("B1").Value = "Betrag"
       Range("C1").Value = "bezahlt?"
    End Sub
  5. Führe das Makro aus: Schließe den VBA-Editor und kehre zu Excel zurück. Drücke ALT + F8, wähle AlleGaeste und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Syntaxfehler: Achte darauf, dass die Zeile, die den Hyperlink hinzufügt, nicht umgebrochen ist. Der korrekte Code lautet:

    ActiveSheet.Hyperlinks.Add Anchor:=Cells(z, 1), Address:="", SubAddress:=ws.Name & "!A1", TextToDisplay:=ws.Name
  • Laufzeitfehler: Index außerhalb des gültigen Bereichs: Dieser Fehler tritt auf, wenn das Tabellenblatt nicht existiert. Überprüfe, ob die Tabelle "Gast-Übersicht" vorhanden ist und richtig benannt wurde.


Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch mit Excel-Formeln arbeiten. Eine Möglichkeit ist die Verwendung von INDIREKT in Kombination mit dynamischen Bereichen, um Daten aus verschiedenen Tabellenblättern zu aggregieren. Diese Methode ist jedoch weniger flexibel und erfordert mehr manuelle Arbeit.


Praktische Beispiele

Hier ist ein Beispiel für das Erstellen eines neuen Arbeitsblatts für einen Gast, einschließlich der Aktualisierung der Übersicht:

Public Sub Blatt_erstellen()
    Dim ws As Worksheet, strBlattname As String, intGastZeile As Integer
    strBlattname = InputBox("Bitte Gast anlegen erfassen.", "Neues Tabellenblatt")
    If strBlattname = vbNullString Then Exit Sub
    Worksheets("Vorlage").Copy after:=Worksheets(Sheets.Count)
    Set ws = Worksheets(Sheets.Count)
    ws.Name = strBlattname
    ' Weitere Schritte zur Aktualisierung der Übersicht hier hinzufügen
End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False am Anfang deines Codes, um die Bildschirmaktualisierung während der Ausführung zu deaktivieren. Dies kann die Geschwindigkeit des Makros erhöhen.
  • Schütze deine Blätter, um versehentliche Änderungen zu vermeiden. Du kannst dies mit ws.Protect "Passwort" erreichen.

FAQ: Häufige Fragen

1. Wo füge ich den VBA-Code ein?
Du musst den Code in ein Modul im VBA-Editor einfügen. Öffne den VBA-Editor mit ALT + F11, füge ein neues Modul hinzu und kopiere den Code dort hinein.

2. Warum funktioniert der Hyperlink nicht?
Stelle sicher, dass der Hyperlink richtig formatiert ist. Die Zeile sollte keine Zeilenumbrüche enthalten und die richtige Syntax verwenden.

3. Wie kann ich die Daten in Echtzeit aktualisieren?
Du kannst den Code so anpassen, dass er bei jeder Erstellung eines neuen Gastblatts auch die Übersicht aktualisiert. Das kann durch das Aufrufen der Übersicht-Subroutine direkt nach dem Erstellen des Blattes geschehen.

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