Thema Datum  Von Nutzer Rating
Antwort
19.04.2021 09:41:00 Vidul
*****
Solved
19.04.2021 10:30:32 Mase
NotSolved
Rot Funktion mit array aufrufen
19.04.2021 11:22:20 Gast73139
NotSolved
19.04.2021 13:15:46 Gast48949
*****
Solved
19.04.2021 13:24:28 Gast48949
*****
Solved

Ansicht des Beitrags:
Von:
Gast73139
Datum:
19.04.2021 11:22:20
Views:
573
Rating: Antwort:
  Ja
Thema:
Funktion mit array aufrufen

Hallo Mase,

vielen Dank für Deine Antwort.

Die angegebene Funktion benötigt noch eine weitere Funktion Divisionsrest(). Wenn ich ParamArray durch byRef ersetze, entsteht in der 4. letzten Zeile:

                ggT = ggT(ggT, Zahl(i))

eine Fehlermeldung. Ich vermute, ParamArray wird benötigt und ich habe mit dem Funktionsaufruf in ggTest() einen Fehler. 

Hier der gesamte code mit Divisionsrest():

Sub ggTTest()
Dim Zahl(1) As Variant
Zahl(0) = 12
Zahl(1) = 33
 
Debug.Print ggT(Zahl())
 
End Sub
 
Function Divisionsrest(a As Double, b As Double) As Double
    'Liefert den Divisionsrest von "a / b". Entspricht "a Mod b", jedoch auf "Double"-Ebene.
    If CStr(a) <> CStr(Int(a)) Or CStr(b) <> CStr(Int(b)) Or a >= 10 ^ 15 Or b >= 10 ^ 15 Then MsgBox "Ungültiger Parameterwert!", vbCritical: Stop
    Divisionsrest = Round(a - Int(a / b) * b, 0)
End Function

Function ggT(ByRef Zahl() As Variant) As Double
    'Liefert den größten gemeinsamen Teiler der "Zahl"-Werte.
    Dim i As Integer, ungültig As Boolean
    Dim a As Double, b As Double, Rest As Double
    ungültig = (UBound(Zahl) = -1)
    For i = 0 To UBound(Zahl)
        ungültig = (ungültig Or Zahl(i) <= 0 Or CStr(Zahl(i)) <> CStr(Int(Zahl(i))) Or Zahl(i) >= 10 ^ 15)
    Next
    If ungültig Then MsgBox "Ungültiger Parameterwert!", vbCritical: Stop
    Select Case UBound(Zahl)
        Case 0: ggT = Zahl(0)
        Case 1
            If Zahl(0) > Zahl(1) Then
                a = Zahl(0): b = Zahl(1)
            Else
                a = Zahl(1): b = Zahl(0)
            End If
            Do
                Rest = Divisionsrest(a, b)
                If Rest = 0 Then Exit Do
                a = b
                b = Rest
            Loop
            ggT = b
        Case Else
            ggT = Zahl(0)
            For i = 1 To UBound(Zahl)
                ggT = ggT(ggT, Zahl(i))
            Next
    End Select
End Function

Vidul


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
19.04.2021 09:41:00 Vidul
*****
Solved
19.04.2021 10:30:32 Mase
NotSolved
Rot Funktion mit array aufrufen
19.04.2021 11:22:20 Gast73139
NotSolved
19.04.2021 13:15:46 Gast48949
*****
Solved
19.04.2021 13:24:28 Gast48949
*****
Solved