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

Function.... HIIIIIILFEEEEEE

Function.... HIIIIIILFEEEEEE
11.07.2004 17:25:24
LXus
Hi Leutz!
Kann mir wer sagen wie ich diese

Function zum laufen bringe?
DANKE
LXus

Function AZT(R1 As Range, R2 As Range, R3 As Range)
Dim Dat As String, Txt As String, Zm As String
Dim Beginn As Date, Ende As Date, P As Date, Ps As Date, BgB As Date, BgE As Date, Zeit As Date
Dat = ThisCell.Offset(0, -6).Text
Beginn = ThisCell.Offset(0, -4).Value
Ende = ThisCell.Offset(0, -3).Value
P = ThisCell.Offset(0, -2).Value
Ps = ThisCell.Offset(0, -1).Value
BgB = Worksheets("A").Range("BE15").Value
BgE = Worksheets("A").Range("BE16").Value
Txt = ThisCell.Offset(0, -4).Text
Zeit = ThisCell.Offset(0, -3).Text
If Dat = "" = True Then
AZT = ""
End If
If WorksheetFunction.IsNumber(Beginn) = True Then
If Beginn < Ende Then
If P <= Ps Then
If Ende >= BgE And Beginn > BgB Then
AZT = BgE - Beginn - Ps
End If
If Ende < BgE And Beginn <= BgB Then
AZT = Ende - BgB - Ps
End If
If Ende < BgE And Beginn > BgB Then
AZT = Ende - Beginn - Ps
End If
If Ende >= BgE And Beginn <= BgB Then
AZT = BgE - BgB - Ps
End If
Else
If Ende >= BgE And Beginn > BgB Then
AZT = BgE - Beginn - P
End If
If Ende < BgE And Beginn <= BgB Then
AZT = Ende - BgB - P
End If
If Ende < BgE And Beginn > BgB Then
AZT = Ende - Beginn - P
End If
If Ende >= BgE And Beginn <= BgB Then
AZT = BgE - BgB - P
End If
End If
End If
If WorksheetFunction.IsText(Txt) = True And _
Txt = "E" Or Txt = "F" Or Txt = "K" Or Txt = "RF" Or Txt = "S" Or Txt = "SE" Or Txt = "E/RF" Or Txt = "SE/E" Then
AZT = WorksheetFunction.VLookUp(Txt, R1, WorksheetFunction.VLookUp(Zm, R3, 3, False), False)
ElseIf Txt = "R" Or Txt = "GB" Or Txt = "SE/RF" Or Txt = "E/ZT" Then
If Zeit <= 0 Or Txt = "" Then Exit Function
End If
If Zeit < WorksheetFunction.VLookUp(Txt, R2, WorksheetFunction.VLookUp(Zm, R3, 3, False), False) Then
AZT = Zeit
End If
If Zeit >= WorksheetFunction.VLookUp(Txt, R2, WorksheetFunction.VLookUp(Zm, R3, 3, False), False) Then
AZT = WorksheetFunction.VLookUp(Txt, R2, WorksheetFunction.VLookUp(Zm, R3, 3, False), False)
End If
Else: Exit Function
End If
End Function

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 17:46:05
Ulf
Was ist ThisCell? Diesen Begriff gibt es nicht.
Ulf
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 17:54:33
andre
Hallo Ulf,
schaue mal in die Hilfe, da gibt es aber Begriffe sag ich Dir ... ;-))
Hallo LXsus,
kannst Du mal eine Testdatei hochladen und beschreiben, wo das Ding klemmt? Mal in den VBA-Editor gehen und mit F9 eine Haltezeile festlegen und dann den Code schrittweise ausführen ...
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 18:06:18
LXus
Hi Andre!
Da klemmt nix - das is ja das Problem!
Setz ich die Formel in Excel ein kommt die Fehlermeldung #Wert!
Un mehr passiert da nicht!
Gruß LXus
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 18:12:56
Ulf
Ja, aber nur als Element von Application, nicht so wie er es verwendet.
Ulf
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 18:40:02
andre
Hallo Ulf,
dann schreib ihm das doch auch so und schreib nicht das es dass nicht gibt. Wenn die Threads dadurch ellenlang werden und die Fragesteller dadurch in die Irre geführt werden muss doch auch nicht sein.
Hallo LXus,
Schreib wie Ulf hingewiesen hat Application. vor alle ThisCell. Dann musst Du noch aufpassen, dass Du die Formel nicht vor Spalte G einsetzt - wegen dem maximalen Offset (-6). Da kommt auch #Wert. Und dann stolpert die Function, wenn die Zelle für die Zeit nix enthält ...
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:01:22
LXus
Hey Andre!
Soweit so gut nun kommt in Excel 0:00 - also kein Fehler mehr.
Erechnet wird aber immer noch nix!
Gruß LXus
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:27:40
andre
Hallo LXus,
in der F unction stecken noch mindestens zwei Fehler.
1.
so was geht nicht:
If Dat = "" = True Then
Zum Vergleich:

Sub test()
a = 1
b = 1
If a = b = 1 Then MsgBox 1
End Sub

Obwohl das logisch stimmt kommt hier keine Msgbox.
Bei Dir könnte If Dat = "" or Dat = True stehen - wobei Dat = True Quatsch ist, denn Du hast Dat ja als String definiert,
2.
If WorksheetFunction.IsText(Txt) = True And _
Txt = "E" Or Txt = "F" Or Txt = "K" Or Txt = "RF" Or Txt = "S" Or Txt = "SE" Or Txt = "E/RF" Or Txt = "SE/E" Then
ist sehr wahrscheinlich auch nicht richtig, die ganzen Txt... müssten eingeklammert sein sonst wirkt das And nur mit dem ersten Txt zusammen.
If WorksheetFunction.IsText(Txt) = True And _
(Txt = "E" Or Txt = "F" Or Txt = "K" Or Txt = "RF" Or Txt = "S" Or Txt = "SE" Or Txt = "E/RF" Or Txt = "SE/E") Then
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:34:05
LXus
Als einzelne Funktionen funktionieren die alle, nur als Gesamtpaket nicht.
If Dat = "" steht ja da - soll ich das rausschmeißen?
Wie krieg ich dann aber diese Überprüfung hin, will nicht im Excel noch 'ne Wenn-Funktion verwenden.
Die einzelnen Funktionen aufrufen - ginge das irgendwie mit call vielleicht?
Wie muss dann die Syntax aussehen?
Danke
LXus
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:46:29
andre
Hallo LXus,
da steht nicht ..Dat = "" sondern Dat = "" = True und siehe meine Antwort dazu.
Dann gehe das Ding mal Schrittweise durch und prüfe auch mal, ob Deine Zellabrufe mit den Dim's übereinstimmen. Wenn Du z.B. Zeit als Date dimmst und im code dann als Text abrufst hast Du die Ursache für ein Problem ... Ich denke mal, als Excel-Profi kannst Du den Code zumindest vom logischen her mal durchgehen und wie ich schon mal schrieb auch schrittweise, damit Du siehst, was passiert.
Überwache dabei auch die Variablen - Ansicht, Überwachungsfenster, und dann mit der rechten Maustaste überwachung hinzufügen und Deine Variablennamen eingeben ...
Woher hast Du das eigentlich?
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:50:30
LXus
Meinst du woher ich die Function habe?
Selbst zusammengereimt - als VBA Anfänger.
Formelüberwachung werde ich durchgehen

DANKE
LXus
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:58:59
andre
.. und noch'n Tip
Haltezeile festlegen
- Cursor auf Codezeile stellen, F9 drücken - z.B. beim ersten Dat = ...
Dann in die Zelle mit der Funktion gehen, F2 und Enter drücken
Schrittweise geht mit F8,
Grüße, Andre
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 20:27:50
LXus
Hi Andre!
Fehler werden nun nicht mehr angezeigt - ausgerechnet wird aber immer noch nix.
:-((
Weis mir nicht mehr zu helfen.
Achja, hatte ich eben vergessen, die Klammern um Txt = E or Txt = F usw. wertet VBA als Fehler.
Gruß
LXus
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 21:00:10
andre
Hallo Elexius,
das ist dann der nächste Fehler:
If WorksheetFunction.IsNumber(Beginn) = True Then
Du tust hier Beginn mit der worksheetfunction prüfen. Das geht im Blatt, aber mit vba nimmst Du
If IsDate(Beginn)=true ...
Grüße und bis zum nächsten Fehler - aber heute nicht mehr, Andre
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 17:46:30
Annett
Hallo LXus
schaue mal auf meine HP da sind noch paar Adressen für Excelforen falls Du noch nicht genügende Adressen hast. Kopieren kannst Du ja schon.
Gruß Annett
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:07:19
Hans W Hofmann
Am besten schmeißt Du das Kontrukt total um.
Du beziehst keine der übergebenen Argumente R1,R2 R3 in Deiner Funktion mit ein, was dazu führt, dass Deine Funktion nur genau einmal, zum Zeitpunkt der Eingabe, berechnet wird und dann nie wieder. Vielleicht liest Du dazu die Anmerkungen zu ThisCell in der OH.
Deine per ThisCell adressiereten Zellen müssen via R1, R2, R3, ... übergeben, angesprochen und in der Funktion verwendet werden. Wobei in Deinem Fall die Übergabe eines einzelnen Range genügen würde:

Function AZT(myInput as range)
Dat = myInput(1)
Begin = myInput(4)
End Function

Alles andere ist dilletantisch und führt zu nix, außer zu viel Ärger...
Gruß HW
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:24:19
LXus
Hallo Hans,
vielen Dank erstmal für die Antwort!
Verstehe nicht ganz wie ich die Syntax aufbauen soll.
Was bedeutet MyInput(1) ?
Ich habe es aber auch schon versucht, in dem ich einfach alles in die Formel geschrieben habe also: Function AZT(Dat As Date, Beginn As Date, Ende As Date, Txt As String, _
R1 As Range, R2 As Range, R3 As Range, Zm As String)

Dann kommt in Excel die Fehlermeldung #Name
Gruß
LXus
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:29:40
Uduuh
Hallo,
vielleicht wäre es hilfreich, wenn du
1. deinen Namen nennen würdest und
2. beschreibst, was du eigentlich bewirken willst.
Es ist nämlich äußerst müßig, sich durch einen augenscheinlich fehlerhaften Code zu wühlen und zu analysieren, was das soll.
Gruß aus'm Pott
Udo
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:54:23
Hans W Hofmann
dito Uduuh...
Lesen bildet :-).
MyInput ist definitionsgemäß Range, genauer Field of Range!
und myInput(1) ist dann der erste Wert im Range myInput
Also wenn =AZT(A1:F1) dann wäre myInput(1) ~ A1 ...

Gruß HW
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:33:16
andre
Hallo Hans,
R1, R2 und R3 sind 3x dabei - etwas weiter unten bei vlockup ...
Ob das so Sinn macht oder was hier rauskommen soll ... sei mal dahingestellt
Grüße, Andre
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 19:45:14
LXus
Ok, ok....
Mein Name ist Elexius.
Mein Vorhaben:
Eine Zeitauswertung zu schreiben.
Die Funktion soll folgendes Bewirken:
1. Stehen zwei Zeitangaben zur Verfügung die Differenz minus Pause bzw. Pausensoll (je nachdem was größer ist) ausrechnen.
- Haken: Diese Zeiten, Beginn und Ende, sind begrenzt - die Begrenzungen müssen also berücksichtigt werden.
2. Ist bei Beginn ein Buchstabe wie E, Se etc. eingetragen soll via SVerweis ein Wert zugewiesen werden.
3. Ist bei Beginn ein oder mehrere Buchstabe(n) wie R, GB etc. eingetragen muss bei Ende eine Gesamtzeit eingetragen werden. Überschreitet diese Zeit eine Grenze gilt diese, anderfalls die eingetragene Zeit.
4. Fehleingaben sollen unterbunden werden.
Ich hoffe das is einigermaßen verständlich.
Gruß
LXus *reusper* Elexius
Anzeige
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 20:00:56
Hans W Hofmann
Ach ja, hab ich überlesen.
Aber meinst Du nicht auch, dass man dem Mann nicht hilft indem man ihn an einem offensichtlich untauglichen Code rumbessern läßt. Und so grundsätzliche Dessignfehler wie fehlerhafte Argumentübergabe unkommentiert stehen lässt?
Gruß HW
AW: Function.... HIIIIIILFEEEEEE
11.07.2004 21:00:59
andre
.. jetzt machen wir 'nen vba-Lehrgang ;-)
Grüße, Andre

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige