Zellenergebnisse in rechnungen weiter verwenden!?!

hallo experten.

ich habe von VBA leider keine ahnung, bin mir aber sicher, dass mein problem für alle hier kinderleicht zu lösen ist!

vba berechnet z.b. 3+4 das ergebnis soll dann in zelle C3 „übertragen“ werden.
im anschluss soll vba 5+C3 rechnen und in B2 übertragen!
und als letzter schritt soll meinetwegen 1 + B2 berechnet werden und in A1 übertragen werden.

das übertragen in die jeweilige zelle soll erstmal intern passieren und nach abschluss aller berechnungen tatsächlich geschehen. (ist so etwas überhaupt möglich?? oder ist das unnötig, weil man das eh nicht auf dem bildschirm mitbekommt und es so aussieht, dass alles auf einmal übertragen wird???)

vielen dank für eure antworten!!!

Moin, daro,

ich habe von VBA leider keine ahnung

so haben wir alle angefangen, also mach weiter wie wir alle: Schalte den Makrorekorder ein, zeichne die Eingaben auf und schau Dir das Ergebnis in VBA an. Bevor irgendwer verstanden hast, was Du vorhast, hast Du die Lösung gestrickt.

Gruß Ralf

hab das gerade mit einem makro versucht. das klappt zwar, erfüllt aber nicht den richtigen zweck!!

wenn ich mit den makros arbeite, dann steht in den jeweiligen excelzellen trotzdem die formel. das soll eigentlich nicht sein!!

ich versuch es dann nochmal genauer zu erklären :smile:

in A1 steht function (beispiel)

und diese funktion soll dann folgendes berechnen:

D3=3+4
C2=15-D3
B1=5*C2
A1=1+B1

genauer in dieser reihenfoge soll es berechnet werden und es sollen für jede zelle die ergebnisse in der jeweiligen Zelle auftauchen!

am ende sollte man bei excel in der zelle D3 7 sehen.
in C2 soll man 8 sehen.
in B1 soll man 40 sehen und in A1 dann 41.

ich hoffe, jetzt ist die sache verständlicher…

Hi Daro,

hab das gerade mit einem makro versucht. das klappt zwar,
erfüllt aber nicht den richtigen zweck!!

wenn ich mit den makros arbeite, dann steht in den jeweiligen
excelzellen trotzdem die formel. das soll eigentlich nicht
sein!!

jain, so grundsätzlich stimmt das nicht, der Code entscheidet was geschieht.

ich versuch es dann nochmal genauer zu erklären :smile:

Sehr gute Idee *find* :smile:

in A1 steht function (beispiel)
und diese funktion soll dann folgendes berechnen:
D3=3+4
C2=15-D3
B1=5*C2
A1=1+B1

genauer in dieser reihenfoge soll es berechnet werden und es
sollen für jede zelle die ergebnisse in der jeweiligen Zelle
auftauchen!

Mal grundsätzlich, Makro ist ja nur ein Oberbegriff für alles Mögliche was automatisiert ablaüft.
In Excel-Vba steckt dahinter Vba-Code der aufgerufen wird.

Dieser Vba-Code steht immer in einer Prozedur, diese wiederum in einem Modul. Es gibt drei Prozedurarten in Excel-Vba: Sub, Function, Property.

Properties lasse ich mal weg, sieht man eh selten, wenn überhaupt sah ich die bisher nur in Klassenmodulen. Und Klassenmodule ist die Königsklasse in Vba, nix für Vba-Beginner.

Wesentlicher Unterschied zwischen einer Sub und einer Function ist, eine Function liefert immer einen Rückgabewert, eine Sub nicht.

Von einer Ecelzelle aus kannst du heutzutage direkt keine Sub starten.
Aber du kannst dort eine selbstgeschriebene Funktion eintragen.
Das ist dann identisch wie wenn du in einer Zelle =SUMME(A1:A5) einträgst.

Es ist unmöglich mit einer in einer Zelle stehenden Funktion in eine andere Zelle etwas eintragen zu lassen.

Zurück zu deiner Anfrage, um dies zu lösen:

D3=3+4
C2=15-D3
B1=5*C2
A1=1+B1

könntest du in A1,B1,C2,D3 jeweils eine unterschiedliche Funktion schreiben/aufrufen.

also in A1:
=Fkt1(B1)

mit dem Code der Function:

Function Fkt1(Zelle as Range) as integer
Fkt1=Zelle.Value+1
End Function

Oder du startest eine Sub, die in alle vier Zellen die Ergebnisse reinschreibt.

Sub Alle()
Range(„D3“)=3+4
Range(„C2“)=15-Range(„D3“)
usw.
End Sub

Bei dieser Sub ist die Reihenfolge der Berechnungen zu beachten.

So oder so, das geht so fix, sehen wirst du da nix, nichtmal Bruce Lee würd da groß was sehen *gg*

Gruß
Reinhard

hallo reinhard,

genau diese antwort hat mein we gerettet!!! hab es gerade mal ausprobiert und tatsächlich geschafft, dass eine zelle berechnet wird.

hoffentlich geht es genau so weiter, sonst meld ich mich bestimmt wieder :smile:

erstmal vielen, vielen dank!!!

nochmals vielen dank!!

hat wunderbar geklappt. aber eine frage hat sich doch noch ergeben.
ich könnte jetzt einen button einfügen, dass dann die berechnungen ausgeführt werden.

kann ich aber in VBA etwas „programmieren“, dass auf tastendruck F8 die berechnungen ausgeführt werden???

DANKE!!!

ich könnte jetzt einen button einfügen, dass dann die
berechnungen ausgeführt werden.

kann ich aber in VBA etwas „programmieren“, dass auf
tastendruck F8 die berechnungen ausgeführt werden???

Hi Daro,

im Klassenmodul „DieseArbeitsmappe“

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey „{F8}“, „“
End Sub

Private Sub Workbook_Open()
Application.OnKey „{F8}“, „Rechne“
End Sub

in ein Standardmodul, z.B. Modul1:

Option Explicit

Sub Rechne()
’ dein Code
End Sub

PS: stell bitte im VB-Editor unter Extras–Optionen „Variablendeklaration erforderlich“ ein, dann haste gleich immer Option Explicit in jedem Modul.

Wenn du einmal fluchenderweise 2 Stunden Suche für einen langen Code verheizt hast, indem du oben im Code gesagt hast Letzte=15 und zig Zeilen später steht
If Letze=15 Then
und das klappt nicht wegen falscher Schreibweise, dann weißt du warum alle Profis ausnahmslos Option Explicit benutzen.

Gruß
Reinhard

lieber reinhard,

ich muss gestehen, das hab ich jetzt nicht verstanden!!
angenommen ich habe folgende sub:

Sub Alle()
Range(„D3“)=3+4
Range(„C2“)=15-Range(„D3“)
usw.
End Sub

wie kann ich jetzt dem programm sagen, dass er diese rechnungen alle auf tastendruck F9 machen soll?

ich muss gestehen, das hab ich jetzt nicht verstanden!!
angenommen ich habe folgende sub:

wie kann ich jetzt dem programm sagen, dass er diese
rechnungen alle auf tastendruck F9 machen soll?

Hallo Daro,

erst F8 jetzt F9, entscheid dich mal :smile:

Grundsätzlich, mit Alt+F11 erscheint der VB-Editor.
Links siehst du eine Liste, aufgebaut wie Ordner im Explorer, zur Not mußt du auf die Plus-Symbole klicken bis sich alles entfaltet.

Dann siehst du links „DieseArbeitsmappe“, darauf mußt du doppelklicken, darein gehört der Code den ich zeigte für „DieseArbeitsmappe“

Wenn links in der Liste noch kein „Modul1“ existiert, dann gehe auf Einfügen—Modul, dann wird es erstellt.

darein gehört der Code für Modul1.

Im Code erkennst du ja „F8“, wenn du es ändern willst auf „F9“, dann mach das.

Dann die Mappe schließen und gleich neu öffnen…

Gruß
Reinhard