Thomas schrieb am 28.09.2010 19:42:35:
Hallo!
In gut 3 Wochen habe ich mein Nachabitur in meinem Projekt. Da auch ein Teil unserer Aufgaben darin bestand eine VBA Lösung zu erstellen, ist das natürlich auch für die Prüfung relevant und ich habe leider nicht so wirklich eine Ahnung davon, da ich der BWL-Spezialist der Gruppe war.
Hier nun mein Problem. Es geht um einen Kassabericht, den ich fertigstellen muss.
Die Aufgabe lautet.
Mit der Schalfläche "übernehmen" sollen die Date in den Worksheet ("Kassabericht") übergeben werden und in die entsprechenden Zellen übernommen werden. Beachte dabei, dass die ersten 3 Zeilen schon Einträge aufweisen. Am Erfassungsformular (User-Form) soll automatisch die nächste Belegnummer angezeigt werden.
Das Formular und die entsprechenden VBA-Anweisungen sind zu erstellen!!!
[IMG]http://foto.arcor-online.net/palb/alben/27/1059027/6561383937643265.jpg[/IMG]
Hier noch ein Foto zur besseren Orientierung! Ich hoffe ihr könnt mit hier weiterhelfen!
FOLGENDES HABE ICH BIS JETZT mit etwaigen Internethilfen geschaft, aber es kommt trotzdem eine Fehlermeldung
Dim Datum As Single
Dim Beleg As Single
Dim Text As Single
Dim Brutto As Single
Dim MWSt As Single
Dim Steuersatz As Single
Datum = txt_datum
Beleg = txt_beleg
Text = txt_text
Brutto = txt_brutto
MWSt = txt_MWSt
If opt_0 = True Then
MWSt = 0
Steuersatz = 0
End If
If opt_10 = True Then
MWSt = txt_brutto * 0.1
Steuersatz = 10
End If
If opt_20 = True Then
MWSt = txt_brutto * 0.2
Steuersatz = 20
End If
If opt_einnahme = True Then
Dim NZeile As Integer
Do
NZeile = NZeile + 1
Loop Until Worksheets("Kassabericht").Cells(NZeile, 1).Value = ""
With Worksheets("Kassabericht")
.Cells(NZeile, 1).Value = NZeile - 1
.Cells(NZeile, 2).Value = Datum
.Cells(NZeile, 3).Value = Beleg
.Cells(NZeile, 4).Value = Text
.Cells(NZeile, 5).Value = Steuersatz
.Cells(NZeile, 6).Value = Brutto
.Cells(NZeile, 7).Value = MWSt
Else: opt_ausgabe = True
Do
NZeile = NZeile + 1
Loop Until Worksheets("Kassabericht").Cells(NZeile, 1).Value = ""
With Worksheets("Kassabericht")
.Cells(NZeile, 1).Value = NZeile - 1
.Cells(NZeile, 2).Value = Datum
.Cells(NZeile, 3).Value = Beleg
.Cells(NZeile, 4).Value = Text
.Cells(NZeile, 5).Value = Steuersatz
.Cells(NZeile, 8).Value = Brutto
.Cells(NZeile, 9).Value = MWSt
End If
Hi Thomas,
zunächst solltest Du die unnötige Schleife
Do
NZeile = NZeile + 1
Loop Until Worksheets("Kassabericht").Cells(NZeile, 1).Value = ""
durch
NZeile = ThisWorkbook.Sheets("Kassabericht").Range("A65536").End(xlUp).Row + 1
ersetzen und das vor die If - Else Entscheidung setzen.
Zum Anderen sind mir Deine Deklarartionen nicht so ganz klar
Dim Datum As Single -> Dim Datum As Date
Dim Text As Single ???
Das "Dim Text" deutet doch daraus hin, daß es sich um Text handelt, oder? Warum also die Deklaration als "Single"?
Dann vermute ich, daß es sich bei den "txt_" Zeichenfolgen um Textboxen Deiner UserForm handelt. Textboxen haben, wie der Name sagt, als Rückgabewert zunächst einen Text. Wenn es sich dabei um Zahlen handelt, müsstest Du entweder
Datum = txt_datum.Value
verwenden oder, sicherer,
Datum = CDate(txt_datum)
Beleg = CSng(txt_beleg)
MWSt = CSng(txt_brutto) * 0.1
Außerdem wäre es natürlich hilfreich, wenn Du sagen wüdest wo die Fehlöermeldung auftritt und wie sie lautet.
Severus |