dett18
Goto Top

Formeln in VBA Code einfügen

Hallo liebe Excel VBA Gemeinde,

ich habe hier eine Buchungsdatei, die mit Daten einer Rechnung gefüllt wird.
Da ich aber bei Spezielen Zellen Formeln brauche, müssten diese möglichst mit
eingetragen werden wenn ich den Buchen Button im Rechnungsformular Betätige.
Der Folgende Code Funktioniert Super, jedoch fehlen die Formeln zu Berechnungen.

Sub Rechnung_eintragen()

Dim Lst As Object, Frm As Object
Dim z As Long
Set Lst = Sheets("Buchung Wasser_A+B") 'Buchungstabelle für Block A+B, ist für jede Buchungstabelle an zu passen !
Set Frm = ActiveSheet

' nächste freie Zeile ermitteln
z = Lst.Cells(Rows.Count, "A").End(xlUp).Row
z = z + 1

' Werte eintragen in Zellen, = Werte aus Zellen der Rechnungstabelle übernehmen

Lst.Cells(z, 1).Value = Frm.Range("I3").Value 'Parzellen Nr
Lst.Cells(z, 2).Value = Frm.Range("B18").Value 'Nutzer Nr
Lst.Cells(z, 3).Value = Frm.Range("E48").Value 'Nachname
Lst.Cells(z, 4).Value = Frm.Range("G38").Value 'Rechnungsbetrag
Lst.Cells(z, 5).Value = Frm.Range("G18").Value 'Rechnungs Datum
Lst.Cells(z, 8).Value = Frm.Range("E43").Value '1 Abschlag
Lst.Cells(z, 11).Value = Frm.Range("E44").Value '2 Abschlag
Lst.Cells(z, 14).Value = Frm.Range("E45").Value '3 Abschlag
Lst.Cells(z, 17).Value = Frm.Range("O3").Value 'Soll Abschlag

'hier sollten die Formeln hinterlegt werden die in den Zellen
' R5,S5,T5,U5,V5,W5 und X5 Stehen sollen

'Rechnungen Buchen für Block A & B
MsgBox "Rechnung erfolgreich in Buchung Wasser A + B gebucht!"

End Sub

Diese Formeln sollen jeweils mit in die Buchung eingetragen werden,
und in jeder Zeile aufgezählt werden, sodas aus R5 die Spalte R6 wird usw.

Formel R5: =Summe(J5+M5+P5)
Formel S5: =Summe(Q5-R5)
Formel T5: =Summe(D5+H5+K5+N5)
Formel U5: =Summe(G5+J5+M5+P5)
Formel V5: =Summe (T5-U5)
Formel W5: =(V5<0)*V5
Formel X5: =(V5>0)*V5

kann mir da vieleicht jemand weiterhelfen, ich wüsste echt nicht wie ich das anstellen soll face-smile
Für eure Hilfe schon jetzt vielen Dank

Content-ID: 298481

Url: https://administrator.de/contentid/298481

Ausgedruckt am: 25.11.2024 um 19:11 Uhr

116301
Lösung 116301 08.03.2016, aktualisiert am 09.03.2016 um 14:42:43 Uhr
Goto Top
Hallo Dett18!

Zeilenunabhängig so:
Lst.Cells(z, "R").FormulaR1C1 = "=SUM(RC[-8]+RC[-5]+RC[-2])"  
Lst.Cells(z, "S").FormulaR1C1 = "=SUM(RC[-2]-RC[-1])"  
Lst.Cells(z, "T").FormulaR1C1 = "=SUM(RC[-16]+RC[-12]+RC[-9]+RC[-6])"  
Lst.Cells(z, "U").FormulaR1C1 = "=SUM(RC[-14]+RC[-11]+RC[-8]+RC[-5])"  
Lst.Cells(z, "V").FormulaR1C1 = "=SUM(RC[-2]-RC[-1])"  
Lst.Cells(z, "W").FormulaR1C1 = "=(RC[-1]<0)*RC[-1]"  
Lst.Cells(z, "X").FormulaR1C1 = "=(RC[-2]>0)*RC[-2]"  

Gruß Dieter
Dett18
Dett18 08.03.2016 um 15:03:24 Uhr
Goto Top
Hallo Dieter

Suuuuuuuuuuppppppppeeeeeeerrrrr!! Vielen vielen Dank, face-smile das ist die Lösung.

und ich kann nun die Beträge die eingehen hinterher Buchen face-smile und das korekte ergebnis wird angezeigt. face-smile

Da ich bei den codes =Sum(RC-8) usw. nicht mehr durch Blicke, da reichen meine VBA kentnisse nicht mehr,könntest Du
mir vieleicht die Formeln in einzel Schritten erklären, damit ich es erlernen kann, für den fall das sich die Tabelle
mal ändern soll ??

Vielen vielen Dank Dieter !

Liebe Grüße
Detlef
116301
Lösung 116301 09.03.2016 aktualisiert um 14:42:28 Uhr
Goto Top
Hallo Detlef!

Naja, je nach Bedarf gibt es verschiedene Arten einer Zelle eine Formel zuzuweisen z.B.:
'Mit absoluter Zell-Angabe in interner VBA-Sprache (englisch)  
Cells(5, "R").Formula = "=SUM(J5+M5+P5)"				  
'Mit absoluter Zell-Angabe entsprechend der Landessprache  
Cells(5, "R").FormulaLocal = "=SUMME(J5+M5+P5)"			  
'Mit relativer Zell-Angabe in interner VBA-Sprache (englisch)  
Cells(5, "R").FormulaR1C1 = "=SUM(RC[-8]+RC[-5]+RC[-2])"		  
'Mit relativer Zell-Angabe entsprechend der Landessprache  
Cells(5, "R").FormulaR1C1Local = "=SUMME(ZS(-8)+ZS(-5)+ZS(-2))"  

Formeln mit absoluten Zell-Angaben (Spaltenname+Zeilennummer) können nur einer bestimmten Zelle zugeordnet werden, d.h. die Formel "=SUMME(J5+M5+P5)" passt nur, wenn sie in der Zelle <R5> steht.

Bei den relativen Zell-Angaben steht das <R> für die Zeile, in dessen Zeile die Formel steht und <c> für die Spalte, wobei in der eckigen Klammer der Spaltenabstand definiert ist. Wenn die Formel also in der Spalte <R> steht, dann steht <C[-2]> für die Spalte <P> und <C[-8]> für die Spalte <J>...

Im Endeffekt bedeutet das, dass beim Kopieren einer Formel über mehrere Zeilen, die Formeln in den 'FormulaR1C1' immer identisch bleiben, wogegen sich in den Formeln 'Formula' die Zeilennummern ändern...

Hoffe, ich hab's einigermaßen verständlich erklärt?face-wink

Gruß Dieter
Dett18
Dett18 09.03.2016 um 14:42:16 Uhr
Goto Top
Hallo Dieter,

vielen lieben Dank für diese Erklärung.
Ich glaube ich habe das nun versatanden, werde dieses nun verinerlichen, damit ich es nicht wieder vergesse.

Vielen lieben Dank für all Deine Mühen.

Da wir auch unser Adress System neu aufgebaut haben hätte ich da eventuell, auch noch mal eine Frage, wenn es soweit ist.
Dürfte ich Dich dazu per Mail irgentwie Kontaktieren ?? oder Lieber die Frage hier im Forum stellen ??

Bis dahin nochmals vielen vielen Dank für alles. face-smile

Gruß Detlef
116301
Lösung 116301 09.03.2016 um 23:45:10 Uhr
Goto Top
Hallo Detlef!

Dürfte ich Dich dazu per Mail irgentwie Kontaktieren ?? oder Lieber die Frage hier im Forum stellen ??
Besser, die Frage im Forum stellenface-wink Zum Einen sind hier einige Spezialisten unterwegs, die sich mit der Materie sehr gut auskennen und zum Anderen, bin ich aus zeitlichen Gründen weniger aktiv vertreten...

Gruß Dieter
Dett18
Dett18 16.03.2016 um 10:47:15 Uhr
Goto Top
Danke für Deine Mitteilung face-smile