Hallo,
ich schreibe derzeit ein Auswertungsskript mit Hilfe von VBA in Excel 2010.
Das Skript soll folgendes tun: Daten aus Zellen einlesen, berechnen und wieder ausgeben.
Es handelt sich derzeit um ~39000 Zeilen.
Das Problem ist die acos-Funktion, diese rechnet 34 Zeilen lang erwiesenermaßen richtig (händische Rechnung), und steigt dann aus mit der Fehlermeldung " Laufzeitfehler 1004: Die Acos Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden.
Per händischer Rechnung gibt es aber ein Ergebnis, einen mathematischen Fehler schließe ich daher aus.
Bereits versucht:
- ActiveSheet definieren
- with active sheet
- Neustart
Jetzt gehen mir langsam die Ideen aus, vllt weiss jemand weiter??
Vielen Dank!!
Hier der Code:
Sub Schaltfläche2_Klicken()
'Tabellenblätter definieren
Set ls1 = ActiveWorkbook.Sheets(1)
Set ls2 = ActiveWorkbook.Sheets(2)
Set ls3 = ActiveWorkbook.Sheets(3)
Set ls4 = ActiveWorkbook.Sheets(4)
Set ls5 = ActiveWorkbook.Sheets(5)
Set ls6 = ActiveWorkbook.Sheets(6)
Set ls7 = ActiveWorkbook.Sheets(7)
Set aus = ActiveWorkbook.Sheets(8)
'Variablen definieren
Dim nmax As Integer: Dim Sx As Double: Dim Sxneu As Double: Dim ar As Variant
Dim br As Double: Dim A As Double: Dim B As Variant: Dim phi As Variant
Dim u1 As Double
Dim u2 As Double: Dim u3 As Double: Dim sigma1 As Double: Dim sigma2 As Double
Dim sigma3 As Double: Dim check As Double
anz = Worksheets(1).UsedRange.Rows.Count
anz1 = anz - 4
’ Auswertung des dreiachsigen Spannungszustandes
For p = 35 To anz1
sigmax = aus.Cells(2 + p, 2)
sigmay = aus.Cells(2 + p, 3)
sigmaz = aus.Cells(2 + p, 4)
tauxy = aus.Cells(2 + p, 5)
tauyz = aus.Cells(2 + p, 6)
tauxz = aus.Cells(2 + p, 7)
I1 = sigmax + sigmay + sigmaz 'Invariante 1
I2 = sigmax * sigmay + sigmay * sigmaz + sigmaz * sigmax _
- tauxy ^ 2 - tauyz ^ 2 - tauxz ^ 2 'Invariante 2
I3 = sigmax * sigmay * sigmaz + 2 * tauxy * tauyz * tauxz - sigmax * tauyz ^ 2 _
- sigmay * tauxz ^ 2 - sigmaz * tauxy ^ 2 'Invariante 3
'Koeffizientenvergleich
A = -I1
B = I2
C = -I3
aus.Cells(2 + p, 12) = A
aus.Cells(2 + p, 13) = B
'Reduzierte Form
ar = B - A ^ 2 / 3
aus.Cells(2 + p, 14) = ar
br = 2 / 27 * A ^ 3 - 1 / 3 * A * B + C
aus.Cells(2 + p, 15) = br
phi = Application.WorksheetFunction.Acos(-B / (2 * Sqr(-(ar / 3) ^ 3)))
u1 = 2 * Sqr(-ar / 3) * Cos(phi)
u2 = 2 * Sqr(-ar / 3) * Cos(phi + 2.0943951023932)
u3 = 2 * Sqr(-ar / 3) * Cos(phi + 2 * 2.0943951023932)