Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1816to1820
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

Formula durch Cells

Formula durch Cells
04.03.2021 11:37:44
Eric
Hallo,
danke an alle die das lesen und sich dir Zeit nehmen mir zu Antworten.
Folgendes eigentlich sehr einfaches, aber mich überforderndes Problem
Ich möchte gerne mittels VBA folgendes in eine Zelle schreiben
Dim lastrow As Integer
lastrow = Workbooks("Datenbank.xlsm").Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
Workbooks("Excel_Vorlage_Neuer_Kunde.xltm").Sheets("Konto").Range("I5").Formula = _
"=SUM(Kontotabelle[Bank A])-SUM(Kontotabelle[Bank E])+Überweisungen!$E$5+[Haupttabelle.xlsm]Kontostände!$D$lastrow-[Haupttabelle.xlsm]Kontostände!$E$lastrow-[Haupttabelle.xlsm]Kontostände!$F$lastrow"

Natürlich ist mir bewusst, dass ich mit so einer Schreibweise jeden VBA-Experten zu Tode trigger, aber ich wusste nicht wie ich sonst kenntlich machen soll was ich vorhabe
Der Bezug in der Zelle möchte ich einfach gerne per Cells ausdrücken statt zB $F$8 um so die "lastrow" Variable einbauen zu können
Liebe Grüße und noch einmal danke an alle!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formula durch Cells
04.03.2021 11:40:52
Eric
"=SUM(Kontotabelle[Bank A])-SUM(Kontotabelle[Bank E])+Überweisungen!$E$5+[Datenbank.xlsm]Kontostände!$D$lastrow-[Datenbank.xlsm]Kontostände!$E$lastrow-[Datenbank.xlsm]Kontostände!$F$lastrow"
Sorry, das ist das was in der Zelle stehen soll :D
Also "Datenbank" heißt die eine Excel Datei und nicht "Haupttabelle"

AW: Formula durch Cells
04.03.2021 11:46:36
Eric
("=SUM(Kontotabelle[Bank A])-SUM(Kontotabelle[Bank E])+Überweisungen!$E$5+[Datenbank.xlsm]Kontostände!$D$" & "lrow" & "-[Datenbank.xlsm]Kontostände!$E$" & "lrow" & "-[Datenbank.xlsm]Kontostände!$F$" & "lrow")
Das wäre meine nächste Idee gewesen, klappt leider aber auch irgendwie nicht..

Anzeige
AW: Formula durch Cells
04.03.2021 11:55:26
Daniel
naja, kann auch nicht, wenn die letzte Zeilennummer in lastrow steht und du stattdessen lrow einsetzt...
ich würde mir erstmal die Formel funktionsfähig von Hand (also ganz normal) in eine Zelle schreiben.
dann liest du mit ?Selection.Formula im Direktfenster den Text für das Makro aus.
wenn du dann meine Replace-Methode verwendest und die sich aus der Formel ergebende Zeilennummer als zu erstetzenden Dummy-Text verwendest, kannst du diese Formel unverändert in den Code übernehmen.
Gruß Daniel

AW: Formula durch Cells
04.03.2021 11:46:53
Daniel
Hi
zum einbauen von Variablen musst du den Teiltext an dieser stelle beenden und die Variable mit & verketten:
...Formula = "=...$D$" & lastrow & "-[Haupttabelle...."
für die anderen Stellen wo LastRow eingefügt werden soll, dann genauso.
es gibt aber noch einen eleganteren Weg:
1. schreibe den Formeltext zunächst in eine Variable, dort wo die Variable eingefügt werden soll, gibtst du einen Dummytext an, der sonst in der Formel nicht vorkommt (kann auch der Variablenname selbst sein)
2. ersetzte dann den DummyText durch den Variablenwert.
also in etwa so:
Dim FO as string
Dim lastrow As Integer
lastrow = Workbooks("Datenbank.xlsm").Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
FO = "=SUM(Kontotabelle[Bank A])-SUM(Kontotabelle[Bank E])+Überweisungen!$E$5+[Haupttabelle.xlsm]Kontostände!$D$lastrow-[Haupttabelle.xlsm]Kontostände!$E$lastrow-[Haupttabelle.xlsm]Kontostände!$F$lastrow"
FO = Replace(FO, "lastrow", lastrow)
Workbooks("Excel_Vorlage_Neuer_Kunde.xltm").Sheets("Konto").Range("I5").Formula = FO

(der Unterschied zwischen einer Variablen in VBA und einem Text der zufälligerweise aus genau den gleichen Zeichen besteht wie der Name der Variablen sollte klar sein)
Gruß Daniel

Anzeige
AW: Formula durch Cells
04.03.2021 11:51:21
Eric
WOW, danke!! :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige