Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1420to1424
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

Funktionen in Klassen aus Modul aufrufen

Funktionen in Klassen aus Modul aufrufen
22.04.2015 14:26:16
Malte
Hallo,
ich komme momentan mit meinen Klassen nicht weiter.
Ich habe folgende Klasse:
clsStoff hier befindet sich der Get-Aufruf sowie eine Funktion:
Public Property Get aT() As Double
aT = paT
End Property
Function func_PR_Parameter_aT(ByVal Temperatur As Double) As Double
paT = pac * (1 + pm * (1 - (Temperatur / pKrit_Temp) ^ 0.5)) ^ 2
End Function

Aus dem Modul kann ich dann wie folgt die Fkt aufrufen:
Sub Test()
Dim Stoff_1 as clsStoff
Stoff_1 = New clsStoff
Stoff_1.func_PR_Parameter_aT(Temperatur)
End Sub

Funktioniert einwandfrei.
Nun habe ich eine zweite Klasse clsMix, ebenfalls mit Get-Aufruf und Funktion:
Public Property Get b_mix() As Double
b_mix = pB_mix
End Property
Function func_b_mix(ByVal Konzentration As Double, ByVal b_1 As Double) As Double
pB_mix = Konzentration * b_1 + (1 - Konzentration) * 2
End Function

Aus dem Modul möchte ich Folgenden Aufruf machen:
Sub Test(byval Stoff_1 as clsStoff)
dim mixL as clsMix
mixL = New clsMix
mixL.func_b_mix(Stoff_1.aT,Stoff_1.aT,Stoff_1.aT)
End Sub
Nun erscheint jedoch immer der Fehler "Fehler beim Komplilieren: Erwartet: ="
Kurz gefasst. Wenn ich nur eine Variable übergebe funktioniert es. Wenn ich mehrere übergebe erscheint der Fehler.
Was mache ich falsch?
Vielen Dank!
Gruß!
Malte

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktionen in Klassen aus Modul aufrufen
22.04.2015 14:59:34
Nepumuk
Hallo,
1. Musst du die Klasse als Referenz übergeben: ByRef Stoff_1 as clsStoff
2. Habe ich keine Lust das nachzubauen, also Mappe hochladen.
Gruß
Nepumuk

AW: Funktionen in Klassen aus Modul aufrufen
22.04.2015 15:15:55
Nepumuk
Hallo,
1. Fehlt da ein Parameter denn die Funktion func_a_mix erwartet 4 du übergibst aber nur 3.
2. Warum machst du da Funktionen in die Klassen wenn du keinen Wert zurückhaben willst? Also mach Sub-Prozeduren daraus.
Gruß
Nepumuk

Anzeige
AW: Funktionen in Klassen aus Modul aufrufen
22.04.2015 15:19:49
Malte
Ja, einen habe ich vergessen, da muss noch der a12 als letzter Parameter rein. Aber der Fehler kommt nach wie vor.
Ich hab gelesen, dass man bei Berechnungen Funktionen machen sollte, um Fehler abzufangen. Werde es aber zu Sub-Prozeduren ändern.
Danke!
Gruß
Malte

AW: Funktionen in Klassen aus Modul aufrufen
22.04.2015 15:23:15
Nepumuk
Hallo,
und was ist a12 sprich welche Eigenschaft oder Methode ist das damit ich das zum testen nachbauen kann?
Gruß
Nepumuk

AW: Funktionen in Klassen aus Modul aufrufen
22.04.2015 15:27:02
Malte
In dem Modul mBinaer in der Sub-Prozedur "Berechnung_Binaer" wird a12 direkt berechnet.
a12 = (Stoff_1.aT * Stoff_2.aT) ^ 0.5
Dadrunter ist der nicht-funktionierende Aufruf, der somit lauten muss:
mixL.func_a_mix(Stoff_1.KonzL,Stoff_1.aT, Stoff_2.aT,a12)
(bzw. später als Sub, was mir auch programmiertechnisch sinnvoller erscheint als eine Funktion ohne Rückgabe)
Gruß
Malte

Anzeige
AW: Funktionen in Klassen aus Modul aufrufen
22.04.2015 15:32:13
Nepumuk
Hallo,
wenn du eine Funktion in einer Klasse aufrufen willst, ohne den Rückgabeparameter zu beachten, dann musst du entweder Call davor setzen (Call mixL.func_a_mix(Stoff.....) oder die Klammern um die Parameter weg lassen. Ich lauf da übrigens in eine Endlosschleife denn S ändert sich nie.
Gruß
Nepumuk

AW: Funktionen in Klassen aus Modul aufrufen
22.04.2015 16:00:30
Malte
Hallo,
ja da fehlt noch einiges an Code. Stehe noch am Anfang.
Mit Call gehts wunderbar.
Komischerweise geht es bei
Public Sub Sub_PR_Parameter_aT(ByVal Temperatur As Double)
paT = pac * (1 + pm * (1 - (Temperatur / pKrit_Temp) ^ 0.5)) ^ 2
End Sub
Auch ohne Call im Modul!
Ich setzt von nun an ein Call davor und ändere die Functions ohne Rückgabe zu Subs um.
Vielen Dank!
Gruß

Anzeige
AW: Funktionen in Klassen aus Modul aufrufen
22.04.2015 16:09:48
Nepumuk
Hallo,
da hast du ja auch nur einen Parameter. Wenn du eine Sub oder Funktion ohne Call aufrufst und eine Klammer um den Parameter machst, dann wird dieser Parameter als Wert und nicht als Referenz übergeben.
ein Beispiel:
Public Sub Test1()
    Dim l As Long
    l = 999
    test2 (l)
    Call test2((l))
    Call test2(l)
End Sub

Public Sub test2(i As Integer)
    MsgBox i
End Sub

Der dritte Aufruf wird angemeckert weil hier der Parameter als Referenz übergeben werden soll und die Datentypen nicht zusammenpassen.
Gruß
Nepumuk

Anzeige
AW: Funktionen in Klassen aus Modul aufrufen
22.04.2015 16:16:15
Malte
Ach so!
Danke für die Erklärung. Dann macht alles Sinn!
Vielen Dank!
Gruß!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige