Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1080to1084
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speziell an Erich aus Kamp-Lintfort, andere können

Speziell an Erich aus Kamp-Lintfort, andere können
09.06.2009 10:35:12
marc
Hallo Erich
Ich habe deinen Vorschlag der Sub-Formel mal ausprobiert, danke übrigens nochmal. Leider bekomme ich jedoch eine Fehlermeldung "Laufzeitfehler 1004" beim Test. Die Hilfe sagt mir, das etwas mit der aktiven/aktuellen Dateiverknüpfung falsch ist.
Leider sagt mir das nicht sehr viel und mir fehlen die Kenntnisse zu beurteilen, wo der Fehler liegt. Irgendeine Idee, woran es liegen könnte?
Hier mal ein Auszug was ich, (hoffentlich richtig) basierend auf deinem Vorschlag, zusammen gebastelt habe.
Beide Sub-Formeln habe ich so hintereinander, vor der UDF, platziert. Stimmt das?

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


3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wo kam das her?
09.06.2009 20:48:48
Erich
Hi Marc,
hatten wir so etwas Ähnliches nicht schon einmal? Ich finde beim besten Willen jetzt nicht,
wann und wo (in welchem Thread). Wäre schön, wenn du das hier posten könntest.
Einiges fällt mir direkt auf:
1.
Die Variablen dbla1STRICH und dblb1STRICH werden deklariert (as Double), bekommen auch Werte
(= Cells(11, 3) bzw. = Cells(12, 3)), werden dann aber gar nicht verwendet.
2.
Die Variable mean_hSTRICH wird deklariert, aber weder mit einem Wert versehen noch verwendet.
3.
Die Variablen dblC11 und dblC12 werden verwendet, aber weder deklariert nicht mit Werten versorgt.
So etwas wäre mit "Option Explicit" nicht möglich!
Wenn bei dir (wie ich stark vermute) nicht "Option Explicit" als erste Zeile in jedem Modul steht,
schau dir doch das mal an: http://www.online-excel.de/excel/singsel_vba.php?f=4
4.
Was soll mit dem Ergebnis der Berechnung passieren? Bisher wird - wenn es denn läuft - gerechnet,
dann wird die Routine verlassen und der gerade berechnete Wert "vergessen".
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
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?

Anzeige
Quelle gefunden
10.06.2009 08:53:06
Erich
Hi Marc,
den Bezug zum alten Thread habe ich jetzt gefunden.
Vergleich doch mal deine neuen Versuche mit den Vorschlägen dort:
https://www.herber.de/forum/archiv/1076to1080/t1077531.htm#1078282
Meine Fragen/Anmerkungen (1 bis 4) bleiben bestehen, wobei die 4. die wichtigste Frage ist.
Wichtig finde ich auch "Option Explicit"!
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige