Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

excel: formel mit parametern kopieren und berechnen





Frage

guten tag allerseits ich habe folgendes problem: ich möchte im visual basic editor von excel programmieren, dass die formel (z.b. "c*x*x+c") im feld C3 mit den werten c = 3 und x = 2 ausgerechnet im feld C4 ausgegeben wird (dabei ist das einlesen der variablen kein problem). ich habe bereits alles probiert, was mir eingefallen ist, doch excel gibt immer die fehlermeldung "unverträgliche typen" aus, da er vermutlich die formel als string ausliest und die parameter als zahlenwerte. wäre toll, wenn jemand eine antwort wüsste! gruss strassi

Antwort 1 von ComputerFee

Hallo strassi,

stell doch mal dein Makro hier rein. Vielleicht kann ich dir dann ja weiterhelfen.


Gruß

ComputerFee

Antwort 2 von strassi ul

n'abend
mein makro sieht bisher so aus:

Sub u1neu()
Dim funktion As Integer
Dim sfunktion As String
Dim xo, x, par, result As Double

sfunktion = InputBox("Wie soll die neue Funktion lauten?", "Eingabe Funktion")
Cells(6, 6) = sfunktion
If Cells(6, 6) = "" Then Cells(6, 6) = "a*x"
x = Tabelle1.Cells(7, 3).Value
par = Tabelle1.Cells(6, 3).Value
result = sfunktion 'hier weiss ich nicht weiter (*)
Cells(14, 6) = result
End Sub

(*) an dieser stelle liegt mein problem: wie kann ich die formel, die im string sfunktion (bzw. in der zelle 6,6) abgespeichert ist, so umwandeln, dass excel sie mithilfe von x und a berechnen kann?
bin für jegliche hilfe dankbar!

gruss
strassi

Antwort 3 von strassi ul

*nochmal n'versuch start*

Antwort 4 von strassi ul

*und nochmal*

Antwort 5 von nighty

hi strassi :)

zu deinem makro faellt mir nur wenig ein da ich kein bezug hab,dieses ist mir spontan aufgefallen :)

Sub u1neu()

Rem hier falsche deklarierung

Dim funktion As Integer
Dim sfunktion As String
Dim xo, x, par, result As Double

sfunktion = InputBox("Wie soll die neue Funktion lauten?", "Eingabe Funktion")
Cells(6, 6) = sfunktion

Rem hier soll mit text innerhalb des textes gerechnet werden

If Cells(6, 6) = "" Then Cells(6, 6) = "a*x"

Rem warum jetzt gerade tabelle1 ?

x = Tabelle1.Cells(7, 3).Value
par = Tabelle1.Cells(6, 3).Value
result = sfunktion 'hier weiss ich nicht weiter (*)
Cells(14, 6) = result
End Sub

bzw.

ein schoenes kleines beispiel einer function,optimal zum lernen und zerpfluecken :)
zaehlt farbige zellen zusammen :)

Function SumInteriorColor(Zellen As Range, farbe As Long) As Double
Dim Zelle As Range
SumInteriorColor = 0
For Each Zelle In Zellen
If Zelle.Interior.ColorIndex = farbe Then
SumInteriorColor = SumInteriorColor + Zelle.Value
End If
Next
End Function

Antwort 6 von nighty

hi strassi :)

das koennte dir auch hilfreich sein

FormulaR1C1 beinhaltet auf eine zelle bezogene formel einen string

gruss nighty

Antwort 7 von nighty

hi strassi :)

so wie ich das sehe sollte nach der eingabe bei der inputbox eine pruefung der zeichekette erfolgen mit anschliessendem einfuegen deiner operanden oder werte,die zum schluss zelle.FormulaR1C1 uebergeben werden sollte und somit in der zugewiesenen zelle nun aktiv ist.

gruss nighty

Antwort 8 von strassi ul

vielen dank allerseits!

werde mal ein bisschen rumprobieren und mich bei (miss-)erfolg wieder melden!

schönen sonnabend
strassi

Antwort 9 von nighty

hi strassi :)

die pruefung beliebiger formeln bzw. zeichenketten ist recht aufwendig :)

vielleicht ist es besser die formeln die man braucht in einem mehrdimensionalen array festzuhalten ,so zu vergleichen ,zu ersetzen(neue statiche werte bzw.operanden ) und zelle.FormulaR1C1 zuzuweisen.

gruss nighty

p.s.
sind ja auch nur so ideen auf vermutungen basierend :)

Antwort 10 von nighty

hi strassi :)

hier noch eine idee :)

Public festhalt As Integer

ist eine globale var

einfuegen von globalen statichen var innerhalb einer formel ermoeglichen ein makrogesteuertes verhalten :)

gruss nighty

Antwort 11 von nighty

hi strassi :)

mehr mich heut wohl gerne aus :)

gruss nighty

einzufuegen alt f11(vbeditor)/projektexplorer/DeineTabelle

reagiert auf formelberechnungen

Private Sub Worksheet_Calculate()
DeinString=Cells(1,1).FormulaR1C1
rem DeinString zur weitere verarbeitung
End Sub

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


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: