vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Worksheet_Change() führt zu #WERT! in Zellen 
Autor: RF
Datum: 27.10.17 22:47

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")

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Worksheet_Change() führt zu #WERT! in Zellen1.440RF05.10.17 20:14
Re: Worksheet_Change() führt zu #WERT! in Zellen765effeff17.10.17 15:30
Re: Worksheet_Change() führt zu #WERT! in Zellen828RF27.10.17 22:47
Re: Worksheet_Change() führt zu #WERT! in Zellen733effeff28.10.17 16:56
Re: Worksheet_Change() führt zu #WERT! in Zellen724RF03.11.17 22:34
Re: Worksheet_Change() führt zu #WERT! in Zellen702MarkM14.12.17 01:44
Re: Worksheet_Change() führt zu #WERT! in Zellen716RF14.12.17 23:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel