Makro in Funktion

Bild

Betrifft: Makro in Funktion
von: Frank
Geschrieben am: 11.12.2003 11:52:00

Hallo,
ich habe mir ein Makro in folgende Funktion umgewandelt:


Function Dienst(zelle) As Integer
Dim z As Integer
Application.Volatile
'range(F9).select (stand vorher im Makro)
Do While ActiveCell.Borders(xlEdgeBottom).LineStyle <> xlNone
   If Left(ActiveCell.Value, 1) = "F" And _
   ActiveCell.Offset(1, -5).Value = "Angestellter" And _
   ActiveCell.Offset(4, 0).Value <> "U" And _
   ActiveCell.Offset(4, 0).Value <> "K" And _
   ActiveCell.Offset(4, 0).Value <> "FA" And _
   ActiveCell.Offset(4, 0).Value <> "FT" Then _
   z = z + 1
   ActiveCell.Offset(28, 0).Select
   Loop
   
End Function

Wenn ich die Funktion mit Dienst(F9) ausführe, wird leider nichts berechnet.
Was mache ich falsch ? Als Makro lief alles einwandfrei.
Gruß
Frank
Bild


Betrifft: AW: ActiveCell --> zelle
von: Galenzo
Geschrieben am: 11.12.2003 11:55:30

Hallo,
ändere mal alle "ActiveCell" in deiner Funktion in "zelle".
Die Funktion soll ja mit der Zelle F9 arbeiten, die du ja als Parameter übergibst. Momentan tut's sie's jedoch noch mit der aktiven Zelle.

mfg


Bild


Betrifft: AW: ActiveCell --> zelle
von: Frank
Geschrieben am: 11.12.2003 12:35:50

Hallo Galenzo,
ich habe alles geändert. Wenn ich die Funktion eingebe fängt er an zu rechnen und hört
nicht mehr auf. Wie kann das sein ?
Gruß
Frank


Bild


Betrifft: AW: ActiveCell --> zelle
von: Galenzo
Geschrieben am: 11.12.2003 14:25:59

Hallo,
ja - dein ursprüngliches Makro durchläuft mehrere Zellen eines Bereiches und tut irgendwas, wenn eine Zelle einen bestimmten Rahmen hat - so wie ich das sehe.
Wenn du sowieso nur EINE Zelle prüfst, brauchst du diese WHILE-Schleife garnicht.

Also sollte auch so geh'n - ohne jetzt zu hinterfragen, was du mit dieser Funktion bezweckst....


Function Dienst(zelle) As Integer
Application.Volatile
 if zelle.Borders(xlEdgeBottom).LineStyle <> xlNone And _
   zelle.Value, 1) = "F" And _
   zelle.Offset(1, -5).Value = "Angestellter" And _
   zelle.Offset(4, 0).Value <> "U" And _
   zelle.Offset(4, 0).Value <> "K" And _
   zelle.Offset(4, 0).Value <> "FA" And _
   zelle.Offset(4, 0).Value <> "FT" Then _
   Dienst = 1
End Function


mfg


Bild


Betrifft: AW: ActiveCell --> zelle
von: Frank
Geschrieben am: 11.12.2003 14:31:33

Hallo Galenzo,
ich brauche diese Funktion um in einem Dienstplan die Anzahl bestimmter Dienste zu zählen. Mit einer Formel geht es nicht. Ich brauche die while schleife deshalb schon.
Das Makro läuft ja schnell, deshalb wundert es mich warum die Funktion nicht mehr aufhört
zu berechnen.
Gruß
Frank


Bild


Betrifft: AW: Makro in Funktion
von: GerdW
Geschrieben am: 11.12.2003 11:55:35

Eine Funktion ist dazu da, einen Wert zu berechnen und zurückzugeben.
In deinem Fall den Wert von Dienst.
Warum solls überhaupt eine Funktion sein?

Gerd


Bild

Beiträge aus den Excel-Beispielen zum Thema " Makro in Funktion "