Anzeige
Archiv - Navigation
1204to1208
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

Rechenproblem

Rechenproblem
sigi
Hallo,
ich habe eine Rechenproblem in meiner Userform.
Im TB-Formular werden in Spalte "B" die Menge und in "E" die Einzelpreise
eingefügt.
Bei Eingabe des ersten Datensatzes stimmt noch die MwSt.
Wird ein neuer Datensatz eingegeben, dann wird die MwSt. nach mir
nicht bekannten Kriterien berechnet.
Habe ich in meiner Formel einen Fehler?
Sub Ang_ZWsumme_berechnen()
Dim Netto, Brutto, Mwst, sSatz, Menge, Epr As Variant
Set wks = Workbooks("OfficeV1.xlsm").Worksheets("Angebot")
With UF_Angebot
.txtAng18.Value = ""
.txtAng19.Value = ""
.txtAng20.Value = ""
End With
Endrow = wks.Cells(Rows.Count, 4).End(xlUp).Row
For I = 22 To Endrow
Menge = wks.Cells(I, 2)
Epr = wks.Cells(I, 5)
sSatz = wks.Cells(8, 7)
If Menge  "" And Epr  "" Then Netto = Netto + (Menge * Epr)
If Menge  "" And Epr  "" Then Mwst = Mwst + (Netto * sSatz / 100)
Next I
If Mwst = "" Then Mwst = 0
Netto = Netto
Brutto = Netto + Mwst
Netto = FormatNumber(Netto, 2)
Brutto = FormatNumber(Brutto, 2)
Mwst = FormatNumber(Mwst, 2)
With UF_Angebot
.txtAng18.Value = Netto
.txtAng19.Value = Mwst
.txtAng20.Value = Brutto
.lblAng21.Caption = "MwSt" & wks.Cells(8, 7) & "%"
End With
With wks
.Cells(9, 7) = WorksheetFunction.Substitute(Netto, ",", ".")
.Cells(10, 7) = WorksheetFunction.Substitute(Mwst, ",", ".")
.Cells(11, 7) = WorksheetFunction.Substitute(Brutto, ",", ".")
End With
End Sub
Danke Gruß
Sigi

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Wieso nicht bekannte Kriterien,...
14.03.2011 21:29:30
Luc:-?
…Sigi;
hier steht doch sSatz = wks.Cells(8, 7) → entspricht Inhalt von [OfficeV1.xlsm]Angebot!G8, und dann noch Mwst = Mwst + (Netto * sSatz / 100). Da kannst nur du auf Grund deiner Daten wissen, ob das richtig ist.
Gruß Luc :-?
AW: Wieso nicht bekannte Kriterien,...
14.03.2011 22:01:45
sigi
Hallo Luc,
in G8 steht der MwSt-Satz (19)
Nun soll jede Zeile also B22 * E22 * G8 und so weiter berechnet werden.
Das heist in B stehen die Menge und in E die Einzelpreise.
Diese sollen bis Daten Ende zweilenweise multipliziert und mit der Mwst. berechnet werden.
Das ergebnis wird immer in .cells (9,7) usw. Zwischengespeichert.
Das Ganze hat den Sinn, das nicht bekannt ist wieviele Datensätze eingetragen werden, jedoch zum Schluß wird am Ende das Ergebnis Netto, MwSt. Brutto eingetragen.
Danke vorab!
Gruß
Sigi
Anzeige
Dann ist's wohl Mwst = Mwst+...
14.03.2011 22:11:47
Luc:-?
…denn dadurch wird der letzte Mwst-Wert immer dazugerechnet, was wohl kaum richtig sein kann, Sigi!
Das korrespondiert auch mit deiner Bemerkung, dass der Mwst-Wert nur in der 1.Zeile stimmt, denn da ist der Mwst-Wert noch 0. Schreibe mal nur Mwst = Netto * sSatz / 100!
Ciao, Luc :-?
AW: Dann ist's wohl Mwst = Mwst+...
14.03.2011 22:19:54
sigi
Hallo Luc,
vielen, vielen Dank.
Sitze schon seit Stunden vor dem Problem, jetzt dank Deiner Hilfe gelöst.
Guß
Sigi
AW: Wie sieht die Mwst-Berechnung..
14.03.2011 22:58:55
Gerd
Hallo Sigi!
... dann in der Rechnung aus. Ein einheitlicher Satz von 19% auf die Gesamtsumme der Nettobeträge?
Gegenüber deinen Einzelberechnungen kann dann eine Rundungsdifferenz auftreten.
P.S.: Ich schreibe evt. noch eine paar Sätze zu deiner Multipage-Frage weiter unten.
Gruß Gerd
Anzeige
AW: Wie sieht die Mwst-Berechnung..
15.03.2011 06:44:46
sigi
Guten Morgen Gerd,
danke erstmal das Du immer wieder auf meine Fragen eingehst.
Da ich beim Entwickeln eines Bauprogrammes bin, habe ich immer nur den MwSt. Satz von "0" oder
"19" Prozent.
In meiner Formel habe ich immer noch den Zusatz Brutto = Round(Brutto,2) Netto.....
Das müßte doch funktionieren!
Das Problem mit der MultiPage habe ich mit for .. Next gelöst.
Da ich mit VBA wenig zu tun habe muß ich eben immer wieder probieren.
Ich würde Dir die Datei (Entwicklung) zukommen lassen, jedoch ist diese zZ. 350kb
Gruß
Sigi
etwas einfacherer Code
15.03.2011 07:40:53
Erich
Hi Sigi,
schau dir doch den Code mal an (ist ungetestet):

Sub Ang_ZWsumme_berechnen2()
Dim I As Long
Dim Netto As Double, Brutto As Double, Mwst As Double
With Workbooks("OfficeV1.xlsm").Worksheets("Angebot")
For I = 22 To .Cells(.Rows.Count, 4).End(xlUp).Row
Netto = Netto + .Cells(I, 2) * .Cells(I, 5)
Next I
Mwst = Application.Round(Netto * .Cells(8, 7) / 100, 2)
Brutto = Netto + Mwst
.Cells(9, 7) = Netto
.Cells(10, 7) = Mwst
.Cells(11, 7) = Brutto
End With
With UF_Angebot
.txtAng18.Value = FormatNumber(Netto, 2)
.txtAng19.Value = FormatNumber(Mwst, 2)
.txtAng20.Value = FormatNumber(Brutto, 2)
.lblAng21.Caption = "MwSt " & sSatz & "%"
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: etwas einfacherer Code
15.03.2011 08:28:26
sigi
Hallo Erich,
Danke für Deine Hilfe!
Dein Code funktioniert.
Habe in etwa das gleiche jedoch nur umständlicher
Gruß
Sigi
AW: I as Long?
15.03.2011 08:34:56
sigi
Hallo Erich,
wieso I as Long?
Ich bezeichne dies immer as Integer
Wo liegt der Unterschied?
Noch ein Problem mit Listbox
Der Code funktioniert nicht immer.
z.B. liest er manchmal bis zu 10 Datensätz ein, manchmal funktioniert er beim 2mal
nicht mehr.
Sub Ang_Listbox_einlesen()
Dim arr()
Dim I%, X%
Set wks = Workbooks("OfficeV1.xlsm").Worksheets("Angebot")
UF_Angebot.lstAng1.Clear
wks.Select
If wks.Cells(22, 1).Value = "" Then Exit Sub
Endrow = wks.Cells(Rows.Count, 4).End(xlUp).Row
For I = 22 To Endrow
If Not IsEmpty(wks.Cells(I, 4)) And wks.Cells(I, 8) = "x" Then
ReDim Preserve arr(0 To 6, 0 To X)
arr(0, X) = wks.Cells(I, 1)
arr(1, X) = wks.Cells(I, 2)
arr(1, X) = FormatNumber(arr(1, X), 2)
arr(2, X) = wks.Cells(I, 3)
arr(3, X) = wks.Cells(I, 4)
arr(4, X) = wks.Cells(I, 5)
arr(4, X) = FormatNumber(arr(4, X), 2)
arr(5, X) = wks.Cells(I, 6)
arr(5, X) = FormatNumber(arr(5, X), 2)
arr(6, X) = wks.Cells(I, 9)
X = X + 1
End If
Next I
UF_Angebot.lstAng1.Column = arr
End Sub

Anzeige
AW: I as Long?
15.03.2011 09:14:48
Rudi
Hallo,
Cells(Zeile, Spalte) verlangt Long-Werte. Sonst müssen die erst von Integer nach Long konvertiert werden.
Außerdem ist mit Integer bei 32767 Schluss.
Imho musst du das Array erst drehen und dann der List-Eigenschaft der ListBox zuweisen.
Sub Ang_Listbox_einlesen()
Dim arr(), wks As Worksheet, EndRow As Long
Dim I%, X%
Set wks = Workbooks("OfficeV1.xlsm").Worksheets("Angebot")
uf_angebot.lstAng1.Clear
With wks
If .Cells(22, 1).Value = "" Then Exit Sub
EndRow = .Cells(Rows.Count, 4).End(xlUp).Row
For I = 22 To EndRow
If Not IsEmpty(.Cells(I, 4)) And .Cells(I, 8) = "x" Then
ReDim Preserve arr(0 To 6, 0 To X)
arr(0, X) = .Cells(I, 1)
arr(1, X) = FormatNumber(.Cells(I, 2), 2)
arr(2, X) = .Cells(I, 3)
arr(3, X) = .Cells(I, 4)
arr(4, X) = FormatNumber(.Cells(I, 5), 2)
arr(5, X) = FormatNumber(.Cells(I, 6), 2)
arr(6, X) = .Cells(I, 9)
X = X + 1
End If
Next I
End With
uf_angebot.lstAng1.List = WorksheetFunction.Transpose(arr)
End Sub

Gruß
Rudi
Anzeige
AW: I as Long?
15.03.2011 10:05:39
sigi
Hallo Rudi,
danke für Deine Antwort, das mit dem Long war mir nicht bekannt.
Das Einlesen der lst funktioniert.
gruß
Sigi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige