Hallo Thomas ! Also im Code am besten am Anfang mit Kommentaren arbeiten, damit du später noch weist, was du grad machen wolltest. Außerdem kann man da schauen, was du machen willst. Bin mir grad nicht sicher, was in welche Spalte soll.
Zum Gleitkommazahlen in Schleifen das evtl. nochmal suchen . Hier ist ein ähnliches Problem.
http://www.office-loesung.de/ftopic513619_0_0_asc.php
Beschreibung der Funktionen ist bei msdn ziemlich gut. Für tanh wäre es so (einfach eine double zahl übergeben)
https://msdn.microsoft.com/DE-DE/library/office/ff837385.aspx
Kürzen etc. kann man machen, wenn der ganze Code steht und läuft. Hier mal dein Code anders dargestellt. Bei der tanh. In Spalte 2 soll ja die Fallgeschwindigkeit v(t) eingetragen werden. Also weist du an die Zelle das hier
= ve * Tanh ( t * g / ve )
Tanh ist dabie deine worksheetfunctin und drinne dann t = (I - 1) * sw , g ist gegeben, ve hast du schon errechnet. müsste dann so ausssehen
= ve * Application.WorksheetFunction.Tanh( (I - 1) * sw *g/ve)
Option Explicit
Public Sub ExtremBasejumper()
Dim Tges As Double
Dim m As Double
Dim sw As Double
Dim I As Integer
Dim erg As Integer
Dim ve As Double
Do
Tges = InputBox("Hier bitte Gesamtfallzeit in Sekunden eingeben")
Loop While Tges <= 0 Or Tges > 100
' fehlt hier nicht der do loop - nicht das ein neg. Gewicht vorkommt oder Buchstaben
m = InputBox("Hier bitte Masse des Jumpers in Kilogramm eingeben")
Do
sw = InputBox("Hier bitte die Fallgeschwindigkeit in Meter pro Sekunde eingeben")
' warum die Prüfung sw ist doch bei loop while als <= 0 definiert
If sw = 0 Then
sw = -1
End If
Loop While sw <= 0 Or 100 < Tges / sw
'soll hier (Tges/sw) + 1 oder Tges/(sw+1) gerechnet werden
erg = Tges / sw + 1
ve = (2 * m * 9.81 / (0.5 * 1.2 * 0.5)) ^ (1 / 2)
' ic würde immer das Tabellenblatt mit ansprechen - sicher ist sicher als activesheet.cells ..
Cells.Clear
Cells(1, 1) = "Fallzeit[s]"
Cells(1, 2) = "Fallgeschwindigkeit[m/s]"
Cells(1, 3) = "Fallstrecke[m]"
For I = 1 To erg
Cells(I + 1, 1) = (I - 1) * sw
Cells(I + 1, 2) = ve * Application.WorksheetFunction.Tanh((I - 1) * sw * g / ve)
Next I
End Sub
|