Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA Hilfe





Frage

Hallo Leute, ich bin ein Neuling was VBA angeht und wir müssen da was machen was ich einfach nicht hinbekomme. Ich habe auch schon versucht mich richtig schlau zu lesen hat aber leider auch nicht ganz funktioniert. Ich denke wenn ich hier nen guten Tipp bekomme klappt das bei mir auch. Also zu meinem Problem: Ich soll eine VBA Funktion erstellen zur Berechnung einer Funktion die gegeben ist. Die Funktion hat drei konstante Werte die in einer Excel Tabelle gegeben sind und eine Variable x, die von 0-10 läuft. Neben den gegebenen x-Werten soll dann der Wert der Funktion rauskommen. Nur leider steh ich grad total auf dem Schlauch und weiß nicht was ich machen soll.

Antwort 1 von Saarbauer

Hallo,

warum mit VBA lösen?

Geht auch mit den Konstanten in den Zellen A1-A3 und dann in zelle B1 bis B11 deine Formel und als Variable x = (Zeile()-1 )

Gruß

Helmut

Antwort 2 von AlexN.

Hallo Helmut,

mir ist schon klar dass es auch ohne VBA geht.
Nur ich muss dass mit VBA lösen. Wir fangen da gerade mit an. Ich habe zwar dazu auch was schriftliches aber leider kann ich damit nicht sehr viel anfangen.

Gruß Alex

Antwort 3 von Primut

Hi Alex,

zB so:

Function Testfunktion(Konstant1 As Double, Konstant2 As Double, Konstant3 As Double, x As Double)
Dim Ergebnis As Double
Rem Beispielfunktion
Ergebnis = (x * Konstant1 + Konstant2) * Konstant3
Testfunktion = Ergebnis
End Function


Hab nur eine Beispielfunktion eingebaut, mußt du anpassen.
Aufzurufen unter benutzerdefinierte Funktionen. Bei Eingabe der Konstanten mußt du natürlich den festen Zellbezug verwenden: $A$1
Dann kannst du es runterkopieren und bekommst für jedes x entsprechenden Funktions-Wert angezeigt.

Gruß Primut

Antwort 4 von AlexN.

Danke für die schnelle Hilfe. Ich werde das gleich mal ausprobieren.

Gruß Alex

Antwort 5 von AlexN.

Hm...ich habe eigentlich das gemacht was du geschrieben hast. Nur leider kann ich das nicht aufrufen.

Ich geb mal kurz die Funktion an die ich haben soll:

P * L ^ 3 / El * (x ^ 2 / 2 * L ^ 2 - x ^ 3 / 6 * L ^ 3

Also alle Werte bis auf das x sind Konstant.

Antwort 6 von Primut

Hey Alex,

klar: etwas Mathe habe ich schon vorausgesetzt!
Wo ist das Ende der Klammer und wo ist das Gleichheitszeichen der Funktion?

Gehe ich recht in der Annahme, daß P,L und El die Konstanten sein sollen?

Dann eben so:

Function Testfunktion(P As Double, L As Double, El As Double, x As Double)
Dim y As Double

y = P * L ^ 3 / El * (x ^ 2 / 2 * L ^ 2 - x ^ 3 / 6 * L ^ 3)
Testfunktion = y
End Function



Wie du siehst, hab ich die Klammer einfach hinten gesetzt.
Wie weit kennst du dich denn mit VBA aus???
Alt/F11 / Einfügen / Modul
dort hinein entsprechenden Code kopieren.

Aufrufen unter Excel im Funktionsmanager unter Benutzerdefiniert und dort - logisch! - unter dem Funktionsnamen Testfunktion.

Also - Übung macht den Meister,

Besten Gruß
Primut

Antwort 7 von AlexN.

Vielen Dank Primut,

bin ziemliches Anfänger in VBA, aber jetzt habe ich das ganze so halbwegs kapiert und es funktioniert auch. Werde jetzt fleißig testen.

Nochmals vielen Dank für deine schnelle Hilfe!!

Gruß Alex

Antwort 8 von AlexN.

So noch mal ich.
Wie schon vorhin geschrieben funktioniert eigentlich alles und ich habe es nun auch verstanden. Aber irgendwie kommen bei mir die falchen Werte raus. Die Funktion stimmt aber. Habe ich schon mehrmals überprüft ob da ein Fehler versteckt ist.
Ich habe das auch mit dem angegebenen Werten im Taschenrechner durchgerechnet und da kommt der Wert raus der auch nachher als Wert rauskommen soll. ich frage mich nur warum der Wert bei mir nicht rauskommt.

Antwort 9 von Primut

Hey,

ich kann deine Werte doch nicht hellsehen!
Mit welchen Werten rechnest du (Konstanten + x) was soll herauskommen und was kommt heraus?

Wie ich schon in AW3 erwähnte, mußt du, wenn du die Formel kopierst und damit für verschiedenen x anwenden willst, die Konstanten als festen Bezug deklarieren, eben $A$1 bei der Formeleingabe oder A1 markieren und dann F4.


Gruß Primut

Antwort 10 von AlexN.

Tschuldigung...hatte total vergessen die Werte anzugeben. So kann mir ja nicht geholfen werden.
Die Konstanten habe ich als festen Bezug deklariert...daran kann es wohl auch nicht zum Fehler kommen.

Also die Konstanten sind:

P: 10
L: 10
El: 1000

Bei x=0 kommt 0 raus. Das stimmt in beiden Fällen.
Aber bei x=1 fängt es dann an. Excel liefert mir folgenden Wert: -1166,666667. Aber sowohl der Taschenrechner wie auch der angegebene richtige Wert ergibt: 0,048.

Bei x=2 liefert Excel mir -11333,33333, aber der richtige x-Wert ist 0,187.

Und so geht es dann weiter.

Antwort 11 von Primut

Hey,

kleiner Tip: Bei jeder Gleichung ist es zwingend notwendig, sauber zu arbeiten!!!
Ich hab doch nicht umsonst in AW6 nach der Klammer gefragt !

Excel rechnet schon vom Prinzip her richtig, du mußt nur die Formel richtig eingeben!
Auf deine gewünschten Ergebnisse bin ich zB mit dieser abgeänderten Formel gekommen:

y=P*L^3/El*(X^2/2*L-X^3/6)/L^3


Ich denke, den Rest solltest du schon allein schaffen!

Gruß Primut

Antwort 12 von AlexN.

Hallo Primut,

habe jetzt alles geschafft. Und die Werte stimmen jetzt auch. Aber die Klammern haben am Anfang eigentlich schon gestimmt, kamen nur die falschen Ergebnisse raus. Vielleicht ist ja da ein Fehler in der Aufgabe.

Nochmals tausend Dank.

Gruß Nagel

Antwort 13 von CaroS

Hallo!

Da schleicht sich bei mir außerdem eine leichte Skepsis ein, ob die Formel hier richtig angegeben wurde. Potenzen, Klammern, Bruchstriche, Minus, kurz gesagt: Operatoren dreier Rangstufen bilden eine reiche Quelle für Übermittlungsfehler.

Wie wäre es, wenn Du (AlexN.) uns die Formel noch einmal mit vollständiger Klammerung angibst. Nur so zur Vergewisserung. Einen Fehler ausschließen zu können ist schließlich auch ein Schritt in die richtige Richtung.

Danke und Gruß,
CaroS

Antwort 14 von CaroS

Sorry, das hat sich zeitlich überschnitten. CaroS

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: