AW: Wo kam das her?
10.06.2009 09:56:01
marc
Hallo Erich
Eigentlich hatte ich folgende UDF:
Sub Formel_1()
Dim dbla1STRICH As Double, dblb1STRICH As Double
Dim h2STRICH As Double, mean_hSTRICH As Double, h1STRICH As Double
'--- Teil 1:
With Application.WorksheetFunction
dbla1STRICH = Cells(11, 3)
dblb1STRICH = Cells(12, 3)
'WENN(C12>0;GRAD(ARCTAN2(C11;C12));360+GRAD(ARCTAN2(C11;C12)))
h1STRICH = .Degrees(.Atan2(dblC11, dblC12)) - 360 * (dblC12 > 0)
End With
End Sub
Sub Formel_2()
Dim dbla2STRICH As Double, dblb2STRICH As Double
Dim h2STRICH As Double, mean_hSTRICH As Double, h1STRICH As Double
'--- Teil 1:
With Application.WorksheetFunction
dbla2STRICH = Cells(20, 3)
dblb2STRICH = Cells(21, 3)
'WENN(C21>0;GRAD(ARCTAN2(C20;C21));360+GRAD(ARCTAN2(C20;C21)))
h2STRICH = .Degrees(.Atan2(dblC20, dblC21)) - 360 * (dblC21 > 0)
End With
End Sub
Public Function Testmakro_dE2000(ByVal L1 As Double, L2 As Double, a1 As Double, a2 As Double, _
b1 As Double, b2 As Double) As Double
'--- Schritt 1
C1 = (a1 ^ 2 + b1 ^ 2) ^ 0.5
'--- Schritt 2
C2 = (a2 ^ 2 + b2 ^ 2) ^ 0.5
'--- Schritt 3
G = 0.5 * (1 - (((C1 + C2) / 2) ^ 7 / (((C1 + C2) / 2) ^ 7 + 25 ^ 7)) ^ 0.5)
'--- Schritt 4
a1STRICH = (1 + G) * a1
'--- Schritt 5
b1STRICH = b1
'--- Schritt 6
C1STRICH = (a1STRICH ^ 2 + b1STRICH ^ 2) ^ 0.5
'--- Schritt 7
'--- Schritt 8
a2STRICH = (1 + G) * a2
'--- Schritt 9
b2STRICH = b2
'--- Schritt 10
C2STRICH = (a2STRICH ^ 2 + b2STRICH ^ 2) ^ 0.5
'--- Schritt 11
'--- Schritt 12
mean_CSTRICH = (C1STRICH + C2STRICH) / 2
'--- Schritt 13
If Abs(h2STRICH - h1STRICH)
Wie du siehst sind Schritt 7 und 11 leer. Da hatte ich ursprünglich folgende Excel-Formeln stehen, die ich in VBA umwandeln wollte.
Schritt 7:
WENN(C12>0;GRAD(ARCTAN2(C11;C12));360+GRAD(ARCTAN2(C11;C12)))
Schritt 11:
WENN(C21>0;GRAD(ARCTAN2(C20;C21));360+GRAD(ARCTAN2(C20;C21)))
Leider hatte ich Probleme damit, und habe daraufhin versucht deinen Vorschlag der Sub-Formeln anzuwenden.
Wie du siehst habe ich diese an den Anfang gesetzt.
Was meinst du mit "...diese Daten werden nach der Berechnung vergessen"? Das wäre schlecht. Der Sinn der UDF ist es einen Startwert (Lab-Daten) durch mehrere Einzelschritte hindurch zu berechnen (Schritt 1- Schritt 25) und den Endwert in einer Zelle eines anderen Sheets anzuzeigen.
Ich hatte eine Excel Datei, in der dies für einzelne Werte gemacht wird. Jedoch habe ich eine sehr große Menge an Einzelwerten (>1000). Um zu verhindern, dass ich alle Zwischenschritte in einem jeweiligen extra Sheet berechne, und damit eine Datei mit 25 Sheets erhalte, habe ich die Einzelformeln in VBA umgewandelt. Idee: Sheet 1 Startwerte RGB, Sheet 2 berechnete Endwerte.
Alle Formeln haben soweit funktioniert, nur Schritt 7 und 11 bereiten mir Probleme.
Ich muss dazu sagen, dass ich absoluter Anfänger in VBA bin. "Reproduzierstatus" sozusagen.
Habe mich vorher immer erfolgreich um diese Sachen gedrückt. Doch jetzt hats mich halt erwischt ;-)))
Am liebsten wäre mir die Berechnung an der ursprüngliche Stelle (7,11), anstatt extra Routinen...Sub-Formeln...etc. Ist übersichtlicher...und gibt mir die Chance weniger Fehler einzubauen.
Gibt es eine Möglichkeit dies so umzusetzen?