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
Für eure Hilfe schon jetzt vielen Dank
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
Für eure Hilfe schon jetzt vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 298481
Url: https://administrator.de/contentid/298481
Ausgedruckt am: 25.11.2024 um 19:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Dett18!
Zeilenunabhängig so:
Gruß Dieter
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
Hallo Detlef!
Naja, je nach Bedarf gibt es verschiedene Arten einer Zelle eine Formel zuzuweisen z.B.:
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?
Gruß Dieter
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?
Gruß Dieter
Hallo Detlef!
Gruß Dieter
Dürfte ich Dich dazu per Mail irgentwie Kontaktieren ?? oder Lieber die Frage hier im Forum stellen ??
Besser, die Frage im Forum stellen 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