1.6k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo!

In meinem Excel Projekt setze ich mich gerade mit Funktionen
auseinander. Leider fehlt es mir da komplett an Ideen.

Ich möchte der Funktion vier Variablen übergeben (lowestDate As
Date, highestDate As Date, anzColumns As Integer, refDate as
Date).
Die Funktion soll mir dafür eine Variable zürückgeben (refColumn As
Integer).

Ich verstehe nicht wo ich die Funktion hinschreiben muss, gehe aber
davon aus dass sie einfach in "DieseArbeitsmappe" unter mein Sub
kann.
Aber wie schreibe ich die Funktion und wie rufe ich sie in meinem
Sub auf.

Vielleicht könnt ihr mir ja wie immer weiterhelfen. Google verwirrt
mich nur.

Gruß,
critchm

9 Antworten

0 Punkte
Beantwortet von
Hallo nochmal,

das ist was ich bisher habe:

Function refColumn(lowestDate As Date, highestDate As Date,
anzColumns As Integer, refDate As Date) As Integer
Dim timeDiff As Double
timeDiff = highestDate - lowestDate
refColumn = (anzColumns / timeDiff) * (refDate - lowestDate)
refColumn = WorksheetFunction.RoundUp(refColumn, 0)
End Function


Wie kann ich die Funktion aber in einem Tabellenblatt oder in
meinem Sub aufrufen?


Beste Grüße,
critchm
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

z.b.

meinevariable=funktionsname(4 uebergabewerte durch komma getrennt oder auch zellbezuege)

oder auch

cells(1,1)=funktionsname(4 uebergabewerte durch komma getrennt)

oder auch als bentzerdefinierte funktion,wie eine formel einzufuegen

achte auf die richtigen uebergabe werte,da sie nicht geprueft werden in deinem beispiel

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

fuer eine eventuelle pruefung mit text info als fehlerausgabe nimmst du statt eine integer einen variant

gruss nighty
0 Punkte
Beantwortet von
Hallo nighty,

danke für deine Antworten, 'es lebt'.
Aber ich habe jedes Mal wenn ich damit anfange etwas zu
programmieren, Probleme mit Sheets, Worksheets, Range, Cells...

Ganz oft bekomme ich Fehlermeldungen in den Zeilen in denen diese
Begriffe stehen. An meinen Variablen liegt es nicht (denke ich). Mein
Sub steht in "DieseArbeitsmappe".

Gibt es irgendwas Grundlegendes dass ich beachten muss wenn ich
diese Begriffe nutze? Hier mal ein Beispiel für was gerade nicht
funktioniert:
rectBegin = Sheets("Input form").Range(Cells(i, 2))


Ich benutze gerne Cells weil ich dann gut mit Integer Variablen arbeiten
kann. rectBegin ist eine Date Variable und in der Zelle steht
zwangsläufig ein Datum. Eigentlich dachte ich auch dass das was ich
gemacht habe eine gute Möglichkeit ist Select und Activate zu
umgehen.

Vielleicht hast du ja eine Idee.
Gruß,
critchm
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi ^^

Sheets sollte so nicht genutzt werden,da es nicht eindeutig ist
Range erwartet in dieser syntax 2 cells befehle

z.b.
rectBegin = Worksheets("Input form").Range(Cells(i, 2), Cells(i, 2))
bzw.
rectBegin = Worksheets("Input form").Range(b & i)

gruss nighty
0 Punkte
Beantwortet von
Hi nighty,

danke für deine Antwort.

Inwiefern ist Sheets nicht eindeutig?

Gruß,
critchm
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

da es auch ein chard objekt sein koennte,eine moegliche umgehung waere eine neue objekt definition,die aber eher sinnlos ist,da es ja eine eindeutige syntax schon gibt,wie oben dargestellt

gruss nighty
0 Punkte
Beantwortet von
Hi nighty,

danke, noch so viel zu lernen :-).
Aber es macht ja auch echt Spass mit VBA herumzuprobieren.

Gruß,
critchm
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

immer fragen und die antworten in frage stellen

es ist gewiss immer der zu antwortende der dumme,weil er nicht soviele antworten parat hat wie der fragesteller fragen stellt

in diesem sinne sind es die zu antwortenden die sich bedanken sollten und nicht der fragesteller

daher bedanke ich mich recht herzlich das ich antworten konnte ^^

gruss nighty
...