ich erhalte bei der folgenden VBA-Routine
-------------------
Option Explicit
Sub Minimax(ByVal a As Double, ByVal b As Double, _
ByVal c As Double, ByRef min As Double, ByRef max As Double)
max = a
If b > max Then max = b
If c > max Then max = c
min = a
If b < min Then min = b
If c < min Then min = c
End Sub
Sub TesteMiniMax()
Dim a, b, c, min1, max1 As Double
a = Cells(2, 4)
b = Cells(3, 4)
c = Cells(4, 4)
Call Minimax(a, b, c, min1, max1)
Cells(7, 4) = max1
Cells(8, 4) = min1
End Sub
--------------------
in der 4. Zeile von unten bei 'min1' die Fehlermeldung:
"Fehler beim Kompilieren: Argumenttyp ByRef unverträglich"
und zermartete mir den Kopf:
Womit ist der min1-Typ 'Double' nicht verträglich?
Kann mir das jemand sagen?
MfG
Detlef Lechner
"Detlef Lechner" schrieb:
> Dim a, b, c, min1, max1 As Double
du deklarierst vier Variantvariablen und eine Variable vom Typ Double!
Die Variable min1 ist somit Variant und im Kopf der Prozedur verlangst
du einen Double, und den als Referenz (ByRef). Es darf gar nicht
klappen, an dieser Stelle einen Variant zu übergeben, einigen
Programmierern würde sonst der Himmel auf den Kopf fallen.
Entweder du verlangst im Prozedurkopf ByVal, dann wird's die
automatische Typenumwandlung schon richten, oder du übergibst einen
Double. Dann musst du aber anders deklarieren, zum Beispiel so:
Dim a As Double, b As Double, c As Double
Dim min1 As Double, max1 As Double
MfG
Michael
--
-------------------------------------------
Michael Schwimmer
Home neu: http://michael-schwimmer.de
Detlef
"Detlef Lechner" schrieb:
> > du deklarierst vier Variantvariablen und eine Variable vom Typ
> > Double!
> Ja, stimmt. Das war der Fehler!
> Danke für den Tipp!
freut mich, wenn es dir weitergeholfen hat. Und Danke für die
Rückmeldung.
> Vergnügtes Wochenende!
Dir auch!
> (Bei Gelegenheit werde ich einmal länger unter den Tiefen
> Deiner Homepage surfen.)
Verirr dich nur nicht ;-)