Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
856to860
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
856to860
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bug im Code, aber wo?

Bug im Code, aber wo?
27.03.2007 15:00:00
Benjamin
Moin Moin nochmal,
ich habe nun versucht eine eigene Funktion zu schreiben. Leider beschwert sich Excel permanent über einen Syntaxfehler, den ich nicht finde. Der Code folgt unten, die Beschreibung der Funktion ist folgendermasse:
Ich betrachte ein Feld 'feld', daß eine EDV-Dosen-Nummer enthält. Nun kontrolliere ich ob diese Nummer in einer Liste 'dosen' bereits auftaucht. Wenn ja dann ermittle ich den zugehörigen Eintrag aus der Liste 'geraete' und gebe ihn zurück. Andernfalls wird der Wert 'Frei' zurückgegeben. Wenn ich die Formel direkt per hand in Excel eingebe funktioniert alles. Nur die Übertragung in VBA scheint noch nicht ganz zu stimmen.
feld: z.B. $A$2
dosen: Bereichsname der auf eine Liste zeigt, z.B. $C$2:$C$20
geraete: Bereichsname der auf eine Liste zeigt, z.B. $D$2:$D$20
Code:

Function DOSENBELEGUNG(feld As String, geraete As Range, dosen As Range) As String
' Dosenbelegung Funktion
' Ermittlung der Anschlussdosenbelegung
DOSENBELEGUNG = IF(COUNTIF(dosen,feld)>0,INDEX(geraete,MATCH(feld,dosen,0)),""frei"")
End Function

Kann mir jemand weiterhelfen? Vielen Dank schon mal :)
Gruß
Benjamin

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bug im Code, aber wo?
27.03.2007 15:10:06
Rudi
Hallo,

Function DOSENBELEGUNG(strFeld As String, rngGeraete As Range, rngDosen As Range) As String
' Dosenbelegung Funktion
' Ermittlung der Anschlussdosenbelegung
DOSENBELEGUNG = IIf(WorksheetFunction.CountIf(rngDosen, strFeld) > 0, WorksheetFunction. _
Index(rngGeraete, WorksheetFunction.Match(strFeld, rngDosen, 0)), "frei")
End Function

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Bug im Code, aber wo?
27.03.2007 15:51:05
Benjamin
Hi Rudi,
danke für die Blitzantwort. Wann verwende ich denn nun eigentlich den 'reinen' Funktionsnamen (z.B. 'INDEX') anstatt 'WorksheetFunction.Index'? Nur bei Rekursionen?
Im großen und ganzen ist das Problem nun behoben, Beschwerden über falsche Syntax bekomme ich nicht mehr und die Ergebnisse stimmen teilweise. Seltam ist nun aber das verschiedene Verhalten der beiden folgenden Varianten:

Function xxx()
DOSENBELEGUNG = IIf(WorksheetFunction.CountIf(rngDosen, strFeld) > 0, WorksheetFunction.Index( _
rngGeraete, WorksheetFunction.Match(strFeld, rngDosen, 0)), "frei")
End Function
bzw.

Function xxx()
DOSENBELEGUNG = IIf(WorksheetFunction.CountIf(rngDosen, strFeld) > 0, "belegt", "frei")
End Function

Die untere Variante zeigt tatsächlicht "frei" an, wenn die Dosennummer nicht gefunden wurde und "belegt" wenn doch. Alles OK.
Die obere Variante zeigt bei existenter Dosennummer den gesuchten Wert ABER bei nicht existenter Nummer beschliesst er plötzlich, daß er keinen vernünftigen Rückgabewert liefern kann. Er spuckt dann das typische "#Wert!" aus mit der Option zum Fehlersuchen.
Das verstehe ich nicht.
Gruß
Benjamin
Anzeige
AW: Bug im Code, aber wo?
27.03.2007 16:19:00
Rudi
Hallo,
in Index und Match dürfen die Bereiche nur 1 Spalte umfassen.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Bug im Code, aber wo?
27.03.2007 17:03:00
Benjamin
Tun sie bei mir ja auch. Die entsprechende Syntax auf die identisch gleichen Bereiche direkt in der Funktionsleiste von Excel angewendet ergibt ja auch einwandfreie Resultate.
AW: Bug im Code, aber wo?
27.03.2007 22:16:57
Rudi
Hallo,
stehe ein bisschen auf Kriegsfuß mit IIF. Damit habe ich auch schon kurionse Ergebnisse erzielt. Probiers mal mit einer einfachen If ...Then...Else Konstruktion.
Gruß
Rudi
Eine Kuh mach muh, viele Kühe machen Mühe.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige