VisualBasic Eine Art Kassensystem erstellen per VBA

Carsten55

Cadet 1st Year
Registriert
Aug. 2013
Beiträge
14
Hallo an alle, ich bin neu und brauche für ein Problem Hilfe.
Ich würde gerne für mich eine Art Kassensystem erstellen. Innerhalb eines Tabellenblatts würde ich gerne durch drücken eines Buttons einen Text in eine Zelle einfügen (1.Zelle ist C6). Ich habe ca. 23 verschiedene Möglichkeiten(=23 Buttons) die eingegeben werden können. Das bedeutet beim drücken eines Buttons muß angefangen von Zelle C6 der Text der im Button hinterlegt ist eingetragen werden. Wenn ich einen anderen Button drücke muß der Text immer in die nächste freie Zelle (Spalte C) eingefügt werden. Ich habe so gut wie keine Ahnung von VBA und deswegen wende ich mich an euch hier im Forum und hoffe ihr könnt mir helfen. Bin für aller Art Anregungen und Fragen offen. Vielen Dank im voraus.
Carsten55

Ps. Ich hoffe ich habe mein Problem gut erklärt.
 
Ich hab jetzt hier leider kein Excel,aber eigentlich sollte das simpel zu lösen sein.

Du fügst die Buttons in dein Sheet ein (wie das geht, findest du leicht per google raus). Jeder dieser Buttons bekommt einen Click-Handler (also eine Funktion, die aufgerufen wird, wenn du auf den Button klickst). Von jedem dieser Handler aus rufst du eine zentrale "Print"-Funktion auf, mit dem zu schreibenden Text als Argument, der variiert also je nach Button.

Die Print-Funktion kann dann ausgehend von der Startzelle nach unten suchen, was die erste freie Zelle ist, und dort den Text reinschreiben. Alternativ kannst du eine statische Variable definieren, die sich die Zeile der nächsten freien Zelle merkt und nach jedem Schreibvorgang inkrementiert wird.

Wie der Zugriff auf einzelne Zellen geht, findest du auch leicht per google raus.
 
Hallo, habe es durch viel suchen geschafft. Für mich klappt es super. :king:

Sub Büro()
Dim Datum_eingeben As String
Datum_eingeben = "tt.mm.jjjj"
Cells(Cells(Rows.Count, "D").End(xlUp).Row + 1, "D").Value = "Büro"
Cells(Cells(Rows.Count, "B").End(xlUp).Row + 1, "B") = Application.InputBox("Einheiten angeben")
Cells(Cells(Rows.Count, "C").End(xlUp).Row + 1, "C") = Application.InputBox(Prompt:="Datum_eingeben", Type:=1)
End Sub

Carsten55
Ergänzung ()

Hallo, natürlich steigen die Ansprüche wenn man etwas geschafft hat. Wenn ich jetzt jedesmal ABBRECHEN drücke in meiner INPUTBOX trägt er mir FALSCH ein. Wie mache ich es das er DIREKT nach dem ersten Abbruch den Eintrag in Spalte D (zB: D8 = Büro) löscht und dann nichts mehr tut? Das bedeutet: Nach Abbruch Eintrag löschen und Schluß.
Danke
Carsten55
 
Indem du den Rückgabewert von InputBox() nicht direkt der Zelle zuweist, sondern einer Variablen. Diese Variable prüfst du dann auf ihren Wert, bevor du ihn der Zelle zuweist.
 
Hallo TotalEclipse,
da reichen meine Kenntnisse glaube ich nicht aus. Habe keine Ahnung wie ich da vorgehen soll. Hast du eine Tipp.
Carsten55
 
Dim ret as Variant
ret = InputBox(...)

if ret <> false Then
Cells(...).Value=ret
End If

Ich hab das selber gerade mal gegoogelt, was den Rückgabewert der Inputbox angibt. Das ist, wenn man aus anderen Programmiersprachen kommt, etwas ungewohnt, weil ret als Variant sowohl String-Werte annehmen kann für gültige Rückgaben, als auch false, wenn Cancel gedrückt wurde.
Das <> prüft auf Ungleichheit.
 
Danke dir und werde es später probieren.
carsten
Ergänzung ()

Hallo,
dank der Hilfe von TotalEclipse:daumen: hat es geklappt. Vielen Dank
Carsten55
 
Zurück
Oben