Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
212to216
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
212to216
212to216
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Benutzerdefinierte Funktion

Benutzerdefinierte Funktion
06.02.2003 17:47:29
Hannes
Hallo zusammen,

wie kann ich eine benutzerdefinierte Funktion die keine Parameter braucht so schreiben, dass sie immer automatisch bei einer Veränderung auf dem Blatt den neuen Wert ausgibt?

Untenstehend der Code der Funktion und vorab schon vielen Dank für die Unterstützung.

Gruss
Hannes

*******************************
Function azeit()

Dim nr1, nr2 As Integer
Dim zelle1, zelle2, zellennr1 As String
Dim zellennr2 As String
Dim anzahlls As Variant 'Entspricht der Anzahl der einzelnen Lackstufen
Dim zeiten As Variant 'Entspricht den Auftragsbezogenen Zeiten
Dim zeit As Integer
Dim maxzeit As Integer


anzahlls = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

For i = 0 To UBound(anzahlls)
nr1 = 6 + i
zellennr1 = nr1
zelle1 = "A" + zellennr1
anzahlls(i) = ActiveSheet.Range(zelle1).Value
Next

zeiten = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

For j = 0 To UBound(anzahlls)
nr2 = 66 + j
zellennr2 = nr2
zelle2 = "I" + zellennr2
zeiten(j) = ActiveSheet.Range(zelle2).Value
Next

maxzeit = 0
For k = 0 To UBound(anzahlls)
If anzahlls(k) <> 0 Then
zeit = zeiten(k)
If zeit > maxzeit Then
maxzeit = zeit
Else:
End If
Else:
End If
Next

azeit = maxzeit

End Function

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Benutzerdefinierte Funktion
06.02.2003 18:08:30
Hans W. Hofmann

Hallo Hannes,

Deine Konstruktion ist in zweifacher Hinsich etwas neben der Spur. Sie benötigt Argumente nämlich und rechnet auch damit und betreibt eine Menge unnötiger Datentransfers:

Function azeit(anzahlls as range, zeiten as range)
For k = 1 To anzahlls.count
If anzahlls(k) <> 0 Then
zeit = zeiten(k)
If zeit > azeit Then
azeit = zeit
End If
End If
next

End function

So etwa, ohne Gewähr und Fehlerüberwachung via
anzahlls.count=zeiten.count

Gruß HW

Klappt super
07.02.2003 10:26:22
Hannes

Hallo HW,

vielen herzlichen Dank. Das klappt hervorragend und ist echt einfacher, als mein Vorschlag...Da hat mal wieder einer (ich) viel zu kompliziert gedacht und wohl doch noch zu wenig Erfahrung mit VBA...Aber ich bin zuversichtlich.

Gruss,

Hannes


Anzeige
Re: Benutzerdefinierte Funktion
07.02.2003 13:04:02
wolf.w.radzinski

Hallo HW

schon wieder so einer, der 'nen Beitrag mehrfach hier reinstellt - da hätt ich mir ja meine Antwort sparen können, denn deine Lösung ist so ziemlich mit meiner identisch :-( den Scholli merk ich mir :-) & nix mehr Antwort hier :-)

Gruß u. schönes Wochenende -wr-


Re: Benutzerdefinierte Funktion
07.02.2003 18:18:17
Hans W. Hofmann

Ärgerlich, das!
Besonders, wenn die Lieben Fragenden sich nicht mal zu einer Entschuldigung oä. aufraffen können. Scheint ganz und gar aus der Mode zu kommen...

Gruß HW

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige