Thema Datum  Von Nutzer Rating
Antwort
27.02.2009 10:31:13 Jan100
NotSolved
27.02.2009 11:21:59 Holger
NotSolved
27.02.2009 16:33:33 Jan100
NotSolved
Blau Aw:Aw:Office2007 Excel VBA
01.03.2009 13:27:42 Holger
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
01.03.2009 13:27:42
Views:
1053
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Office2007 Excel VBA
Hallo Jan100,
wenn es so wichtig für euch ist, finde ich es merkwürdig, dass ihr euch nicht die Mühe macht, mit Hilfe der VBA-Hilfe nachzuvollziehen, was man euch vorgeschlagen hat. Ich weiß ja nicht, was die "Wichtigkeit" ist, doch ist bei der Beschreibung davon auszugehen, dass es sich um Übungen für Schule, Studium oder Berufsausbildung handelt. Wollt ihr denn später für die Lösung eurer Aufgaben auch die ganze Welt beteiligen? Programmieren lernt man nur durch Programmieren. Ich verstehe das Forum so, dass man dann weiter hilft, wenn jemand an einer Stelle nicht weiter kommt. Dass es manchmal für mich schneller geht, eine fertige Lösung zu schicken, als speziell auf ein Problem einzugehen, liegt daran, dass oft schon fertige Lösungen vorliegen, die ich nur kopiere. Nur in den wenigsten Fällen wird dadurch ein Problem vollständig gelöst. Ich verwende ungern mehr als 10 Minuten dafür, ein Anliegen zu bearbeiten. Ich gehe davon aus, dass jeder hierfür Verständnis aufbringen wird. Ich kann deshalb meistens auch nicht die Vorschläge komplett austesten. Meine Anpassung an die Fragestellung ist deshalb auch manchmal nicht vollständig. Ich verstehe die Vorschläge immer nur als Hinweise, wie man das Problem in den Griff bekommen kann. Oft sind die Beschreibungen in den Fragestellungen auch sehr unscharf, so dass es zu viele Möglichkeiten gibt, was der Schreiber eigentlich möchte - von Orthografie und Interpunktion ganz abgesehen.
Dass ich in meinem Vorschlag für die Berechnung des Integrals anstelle der ersten Spalte die erste Zeile der Excel-Tabelle genommen habe, obwohl ich etwas anderes beschrieben habe, wird jedem ernsthaften Lernenden des VBA sofort aufgefallen sein und liegt am o.a. Kopieren. Der Witz meines Vorschlages war, dass in E1 die zu integrierende Funktion als Text (ohne Gleichheitszeichen!) und nicht als Excel-Funktion stand. So war ja sinngemäß die Aufgabe gestellt. Dieses ggf. in eine Excel-Funktion umzusetzen, sollte auch einem Anfänger möglich sein.
Wenn ihr in A5 eine Excel-Funktion, z.B. "=A4^3", "=sin(A4)*ln(A4) oder "=abs(ln(A4))^log(A4)",
in A1 die untere Integralgrenze, in A2 die obere Integralgrenze und in A3 die Schrittweite einsetzt, ist das Programm doch ganz einfach. Fehler aus Polstellen oder Unstetigkeiten werden natürlich auch hier nicht aufgefangen! Der Funktionswert wird jeweils ungefähr in der Intervall-Mitte genommen. Das hat zwei Vorteile: erstens kann man annehmen, dass das Produkt aus Funktionswert mal Intervallbreite der zu berechnenden Teilfläche besser entspricht, wie wenn der Funktionswert an einer Intervallgrenze genommen wird, und zweitens vermeidet man Probleme mit dem Abbruch einer Berechnungsschleife, weil bei Addition kleiner Zahlen Rundungsfehler dadurch entstehen, dass im Binärsystem Zahlen durchaus periodisch nicht abbrechen, die dies im Dezimalsystem tun (rechnet doch einmal 0,1 im Binärsystem aus!). Nun ist die Intervallbreite für alle Intervalle gleich, weshalb man die Multiplikation auch zum Schluss machen kann. Um das Integral zu berechnen, braucht man also zunächst nur die Funktionswerte zu addieren.

Sub Integral_mit_Funktion_in_Zelle_A5()
s = 0 'Variable zum Aufaddieren der Funktionswerte
For x = Cells(1, 1) + Cells(3, 1) / 2 To Cells(2, 1) Step Cells(3, 1) 'jeweils ca. die Intervallmitte
Cells(4, 1) = x 'lfd x
s = s + Cells(5, 1) 'Aufaddition der in A5 von Excel berechneten Funktionswerte
Next x
MsgBox s * Cells(3, 1) 'Ergebnis der Addition multipluziert mit Intervallbreite
End Sub

Gruß
Holger

Jan100 schrieb am 27.02.2009 16:33:33:

Finde es toll dass auf dieser seite wirklich sehr kompetente leute anzutreffen sind.
eure hilfe ist zu gut, sprich die lösungen sind derart raffiniert, dass niemand davon aus gehen würde, dass sie von uns laien stammen.
unser problem liegt darin, dass es sich bei den aufgaben um etwas sehr wichtiges handelt. bewusst erwähne ich diese wichtigkeit nicht muss leider reichen.
geholfen wäre mir bzw paddy mit einer einfach strukturierten lösung, die von einem laien gewählt würde.
weiss nicht ob dieser beitrag noch rechtzeitig gelesen wird von jemand kompetenten der sich der aufgabe gewachsen fühlt eine anfänger lösung zu basteln.
mir wäre nur geholfen wenn dies noch bis ca 22 uhr der fall wäre
vielen dank

bis demnächst :)



Jan100 schrieb am 27.02.2009 10:31:13:

Sub Integral()


Schreiben Sie ein Programm zur numerischen Integration einer Funktion mit einer Variablen "x". Die Zellen eines Arbeitsblattes enthalten A1: die untere Integralgrenze, A2: die obere Integralgrenze, A3: die Schrittweite, A4: x (muss vom Programm in einer Schleife bestimmt werden), A5: die Funktion als Formel. Das Integral soll in einer MsgBox ausgegeben werden.




Dim obereIntegralgrenze#, AnzahlTeilintervalle#, x#, Breite#, irgendwas# 'deklariert als double

Dim Laufvariable1% 'deklariert als integer

Dim Funktionsgleichung$ 'deklariert als string

Dim Ergebnis! 'deklariert als single



'eingabe der benötigten werte

uIntgrenze = InputBox("untereIntegralgrenze")

oIntgrenze = InputBox("obereIntegralgrenze")

Anzinterv = InputBox("AnzahlTeilintervalle")

Fnktgl = InputBox("Funktionsgleichung") 'z.B (=4*x+6)



'

Cells(1, 1) = uIntgrenze

Cells(2, 1) = oIntgrenze

Cells(3, 1) = Anzinterv

Cells(5, 1) = Fnktgl



Breite = (oIntgrenze - uIntgrenze) / Anzinterv



For Laufvariable1 = 1 To Anzinterv 'laufindex



Vari = uIntgrenze + (Laufvariable1 * Breite) ' ZelleA4 x



Cells(4, 1) = x

irgendwas = Cells(5, 1)

irgendwas = irgendwas + Cells(6, 1)

Call Zwischenergebnis(irgendwas)

Next



Ergebnis = Breite * Cells(6, 1)



MsgBox (Ergebnis)





End Sub

Sub Zwischenergebnis(irgendwas)

Cells(6, 1) = irgendwas



End Sub



Habe mich an der Aufgabe versucht, jedoch beziehe ich weder meine Werte aus der Tabelle, noch gibt mir das Programm stets die gleichen Ergebnisse aus.

Vielen Dank nochmals im Vorraus

Jan100

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
27.02.2009 10:31:13 Jan100
NotSolved
27.02.2009 11:21:59 Holger
NotSolved
27.02.2009 16:33:33 Jan100
NotSolved
Blau Aw:Aw:Office2007 Excel VBA
01.03.2009 13:27:42 Holger
NotSolved