Hallo,
- meine Funktion hat einen Rückgabewert. Das lässt sich einfach überprüfen, z.B. im Formelfenster von Excel. Dort funktioniert alles.
- Cell(1,1) bezieht sich auf die erste Zelle des übergebenen Bereiches, nicht des Arbeitsblattes. Das lässt sich leicht überprüfen da die Funktion im Formelfenster den korrekten Wert anzeigt. Cell(,) != Cells(,) !!!!
- Die Überprüfung geschieht mit dem Teilbefehl "ColorIndex = 35". Das lässt sich leicht überprüfen, denn wie ich oben schrieb: 1) Im Formelfenster von Excel gibt die Funktion den korrekten Wert zurück.
Ich weiß nicht, ob dir die verkürzte Schreibweise von Funktionen und deren Rückgabe werten bekannt ist. Falls nicht solltest Du aber nicht im Forum "Fortgeschrittene Programmierung" kommentieren.
Viele Grüße,
Rico
P.S.: Zum bessern Verständnis. Nehmen wir die oben genannte Funktion und schreiben sie mal ganz ausführlich nach Erstsemestermanier auf:
Function IsDigital(Cell As Range)
Dim CellColorIndex As Integer
Dim Result As Boolean
CellColorIndex = Cell(1,1).Interior.ColorIndex
If CellColorIndex = 35 Then
Result = True
Else
Result = False
End If
IsDigital = Result
End Function Das ist unnötig viel Code. Als erster kann man die letzte Zuweisung streichen und den Wert direkt zuweisen.
Function IsDigital(Cell As Range)
Dim CellColorIndex As Integer
CellColorIndex = Cell(1,1).Interior.ColorIndex
If CellColorIndex = 35 Then
IsDigital = True
Else
IsDigital = False
End If
End Function Als nächstes kann man die Zuweisung CellColorIndex entfernen:
Function IsDigital(Cell As Range)
If Cell(1,1).Interior.ColorIndex = 35 Then
IsDigital = True
Else
IsDigital = False
End If
End Function Schlussendlich kann man auch noch das If-Then-Else wegstreichen, denn der Wert ist ja sowieso direkt davon abhängig, welche Farbe die Zelle nun hat. Also:
Function IsDigital(Cell As Range)
IsDigital = (Cell(1,1).Interior.ColorIndex = 35)
End Function Und genau so steht es oben. Ich gestehe hier die Verwirrung zu, die VB schafft weil die Funktionszuweisung in anderen Sprachen eher so aussehen würde:
IsDigital == (Cell(1,1).Interior.ColorIndex = 35) ____________________________________________________
"Mein Leipzig lob' ich mir, es ist ein Klein-Paris" (aus: "Faust")
|