Hallo Dieter,
kein Problem. Trotzdem danke für die Hilfe.
Viele Grüße
Marcel
Hallo Dieter,
kein Problem. Trotzdem danke für die Hilfe.
Viele Grüße
Marcel
Hey Gerold,
vielen Dank für das Beispiel. Ich habs mal so gemacht und habs tatsächlich hinbekommen.
Ich hab da noch nen anderes Problem. Ich habe ein VBA-Script und komme nicht ganz klar beim Einbinden in Excel. Hast du zufällig davon Ahnung?
Viele Grüße
Marcel
Hallo Ben,
ich hab jetzt ein VBA-Script, was mir die Formeln umstellt und nach der suchenden Variablen umstellt. Ich weiß jetzt nur nicht, wie ich das ganz in Excel einfügen soll, bzw. wie ich Zellverknüpfungen machen kann. Weißt du vielleicht wie das geht, das wäre nett. Da könnte ich dir mal das Script schicken
Viele Grüße
Marcel
Hallo Marcel
Ja, ich denke ich kann dir helfen.
Beschreibe mal dein Problem.
Gruss
Gerold
Hey Gerold,
das Problem ist, ich habe dieses VBA:
Private Function Iteration(ByVal Formel As String) As Double
Dim Ziel As Double, po As Integer, Erg As Double, RI As Single, SW As Double, x As Double
Dim Test As String, flag As Boolean, mk As Double
po = InStr(Formel, „=“) - 1
Ziel = CDbl(Left(Formel, po))
Formel = Right(Formel, Len(Formel) - (po + 2))
RI = 1
x = 0.1
SW = 2
Do While Round(Erg, 9) Round(Ziel, 9)
Test = Replace(Formel, „X“, CStr(x))
Test = Replace(Test, „,“, „.“)
On Error Resume Next
Erg = Script.Eval(Test)
If flag = False Then
mk = Erg
x = x + (SW * RI)
flag = True
Else
DoEvents
If Abs(Ziel - Erg) > Abs(Ziel - mk) Then
RI = RI * -1
SW = SW / 2
x = x + (2 * SW * RI)
mk = Erg
Else
x = x + (SW * RI)
mk = Erg
End If
End If
Loop
Iteration = Round(x, 5)
End Function
Damit kann man Formeln, bsp. 25.4 = 3*X^2 + 4*X + 9 iterativ berechnen und das Ergebnis für X wird dann ausgespuckt.
Jetzt weiß ich nicht, wie ich den Bezug zu Excel hinbekommen soll. Zusätzlich wird noch ein ActiveX Steuerelemnt benötigt, das dann das Script auslöst.
Ich hoffe, du kannst mir helfen und habe Problem verständlich erklärt.
Viele Grüße
Marcel
Hallo Marcel,
verstehe ich das richtig: Du hast eine Formel x = y+z und wenn du für y dann ? eingibst, soll excel dir, wo auch immer, den wert für y = x-z eingeben?
Hallo WolliP,
genau, dass ist das Problem. Könnte man so etwas vielleicht mit VBA lösen? Vielleicht mit einem Script, das durch Iteration den Wert berechnet. Mir geht es hauptsächlich darum, dass, wie im deinem Beispiel, der Wert für y dann automatisch berechnet wird. Ist das eigentlich möglich?
Viele Grüße
Marcel
Hallo Marcel
Sub aa()
x = Iteration(„2 = was auch immer…“)
End Sub
und Cursor in diese Sub und dann F5 drücken oder besser F8, dann gehst du schrittweise durch den Code.
oder du machst dir einen button und in sein click event diesen code. dann kannst du ihn per click starten…und am Schluss x in irgend eine Zelle schreiben…oder das Ding in einer Schlaufe ausführen…
verstehe ich nicht…
Erg = Script.Eval(Test)
was ist script für ein Objekt…???
wo wird das flag gesetzt???
If flag = False Then
hast du noch mehr code den du mir verheimlichst???
Gerold
Hallo Gerold,
erstmal besten Dank für deine Hilfe. Es ist in der Tat nicht der komplette Code. Entschuldigung. Das war folgendermaßen. Jemand hat für mich diesen Code geschrieben, allerdings mehr als nötig. Er hat gemeint, das ich nur die Funktion „Iteration“ benötige, mehr nicht und davon bin ich ausgegangen. Daraufhin habe ich mir mal das komplette Script schicken lassen, leider funktioniert das auch nicht so recht. Hier ist jetzt alles was ich habe:
Option Explicit
Dim mk As String
Private Sub Command1_Click()
Dim i As Integer, Formel As String, V As String, n As Integer
Formel = UCase(Text1.Text)
For i = 1 To Len(Formel)
V = Mid(Formel, i, 1)
If Asc(V) > 64 And Asc(V) Round(Ziel, 9)
Test = Replace(Formel, „X“, CStr(x))
Test = Replace(Test, „,“, „.“)
On Error Resume Next
Erg = Script.Eval(Test)
If flag = False Then
mk = Erg
x = x + (SW * RI)
flag = True
Else
DoEvents
If Abs(Ziel - Erg) > Abs(Ziel - mk) Then
RI = RI * -1
SW = SW / 2
x = x + (2 * SW * RI)
mk = Erg
Else
x = x + (SW * RI)
mk = Erg
End If
End If
Loop
Iteration = Round(x, 5)
End Function
Private Sub Form_Load()
Me.Show
Text1_Validate (False)
End Sub
Private Sub Text1_Validate(Cancel As Boolean)
Dim i As Integer, Formel As String, V As String, n As Integer
Formel = UCase(Text1.Text)
For i = 1 To Len(Formel)
V = Mid(Formel, i, 1)
If Asc(V) > 64 And Asc(V) „X“ Then
Text2(n).Text = n + 2
Else
Text2(n).Text = „X“
End If
'******************************
Text2(n).Visible = True
Label1(n).Visible = True
n = n + 1
End If
End If
Next
End Sub
Ich hoffe, es hilft dir jetzt weiter. Ich habe keine Ahnung, was da so richtig abläuft. Der „Jemand“ meinte, das es bei Ihm auf VB6 läuft.
Sorry nochmal für die Umstände.
Viele Grüße
Marcel
Dein Code zeigt dass dazu ein Forumlar mit 2 Textboxen und eine Schaltfläche gehören.
Ich denke das Zeugs brauchts wirklich nicht unbedingt.
Dein Problem liegt bei diesen 2 Zeilen.
Erg = Script.Eval(Test)
If flag = False Then
z.B.
http://www.vbarchiv.net/forum/read.php?id=3&t=4870&i…
das sieht mir nach einem Scripting Control aus, das eingebunden und initialisiert werden müsste.
in VBA unter extras/Verweise… kann eine Library hinzugefügt werden.
weisst du welche?
Gerold
Hey Gerold,
das klingt interessant. Ich habe den, der das Script gesschrieben hat, nochmal angeschrieben. Er sagte, dass man das „Microsoft Script Control 1.0“ benötige. Ich habe es unter Extras/Verweise aktiviert. Leider geht es immer noch nicht. Muss man irgendeinen Button dem Script zuordnen?
Danke für deine Hilfe und viele Grüße
Marcel Gutzeit
Hallo Marcel
bei mir gibts leider einen Fehler wenn ich die Library hinzufügen will.
schau mal:
http://www.vbarchiv.net/forum/read.php?id=3&t=4870&i…
den Forumseintrag Datum: 05.12.01 19:11
die Library stellt vermutlich ein control (eine Klasse wie eine Schaltfläche) zur Verfügung, der du den Namen Script geben kannst.
wegen dem Fehler kann ich dir jetzt nicht weiterhelfen. müsse es mal zuhause ausprobieren…
gerold
Hallo Marcel,
wenn ich Dein Problem richtig verstanden habe dann würde ich die Formel mit verschachtelten Wenn’s einbauen.
Z.B.: =wenn( UND(A1 = „?“;A2 „?“; A3 „?“); Formel 1; wenn( UND(A2 = „?“; A1 „?“; A3 „?“); Formel 2; wenn( A3 = „?“; A1 „?“; A2 „?“); Formel 3; „Keine gültigen Eingaben!!!“)))
Viel Erfolg!!!
Ciao
Wolfgang
Hallo Wolfgang,
danke für deine Hilfe. Das habe ich mir auch schon überlegt. Eigentlich wollte ich, dass die Formlen nach einer bestimmten Variablem automatisch aufgelöst werden. Soweit ich weiß, ist das nur mit einem Makro möglich, das bei Bedarf die Formel nach der fehlenden Variablen ausgerechnet wird.
Kennst du dich vielleicht mitMakros aus? Ich habe das Script vorliegen, schaffe es aber nicht ein Excel einzubinden. Wäre schön, wenn du mir dabei helfen würdest.
Viele Grüße
Marcel
Hallo mit Excel-VBA habe ich keine große Erfahrung. Nur mit Access-VBA.
Ich könnte es versuchen, wenn Du mir das Skript und eine kleines Excel-Beispiel schickst. Dann schaue ich mir das an. Versprechen kann ich allerdings nichts.
Ciao
Wolfgang
Meine E-Mail: [email protected]
Hallo Marcel,
ja, das ist per vba möglich; aber da du, wie du schreibst, nicht nur eine Formel, sondern sehr viele, und dann noch sehr verschiedene Formeln hast, lässt sich meiner Meinung nach das Problem so nicht lösen. für dein Beispiel x+y=z gebe ich dir die Lösung:
sub Loesung()
dim x, y, z as double, xStr, yStr, zSTr as astring
xStr = Range(„A1“)
yStr = Range(„A2“)
zStr = Range(„A3“)
if xstr = „?“ then
x = cdbl(zstr) - cdbl(ystr)
Range(„A1“) = x
elseif ystr = „?“ then
y = cdbl(zstr) - cdbl(ystr)
Range(„A2“) = y
elseif zstr = „?“ then
z = cdbl(xstr) + cdbl(ystr)
Range(„A3“) = z
else
'Keine Veränderung
end if
end sub
Hey Wolli,
danke für deine Hilfe. Es ist eine gute Idee es so zu lösen, dass werde ich dann wahrscheinlich so machen.
Viele Grüße
Marcel
Hallo Marcel,
wie mir scheint bist Du in VBA nicht gerade bewandert.
Ich schlage folgendes vor:
Du schickst mir Dein Script und ich sende Dir eine Excel-Tabelle mit eingebautem Script und einigen Erläuterungen zu.
Aber ich rate Dir dringend Dich zu informieren!
Es gibt massenweise Bücher über VBA und Excel.
Du mußt aber dringend auf die Excel-Version achten, weil sich hier ständig was ändert.
Ich arbeite noch mit Excel 2003.
Viele Grüße
Ben
Hey Ben,
besten Dank, dass du dich dafür bereit erklärst. Stimmt, viel Ahnung habe ich von der Materie nicht, werde mir aber auf jedenfall mal ein paar Bücher versorgen, da ich es in Zukunft öfters benötigen werde. Unter folgenden Link kannst du die Datei für Excel 2003 runterladen, hab leider keine Email von dir.
http://rapidshare.com/files/410552208/Iteration.zip
Ich habe mal versucht die Datei einzubinden, funktioniert aber irgendwie nicht so recht.
Viele Grüße
Marcel
Hallo,
bin zur Zeit im Urlaub…
Grüße Holger L.