Seite 1 von 2

Programmierhilfe Makro in Basic "Datum zurückgeben"

Verfasst: Mo, 27.03.2006 12:45
von sascha11
hey!

ich benötige eine Funktion, die mir, wenn ich einen Wert im Format 24.1.2006 oder 24.01.2006 übergebe, mir den Monat in Form von 1-12 zurückgibt- kann mir das jemand programmieren, in Basic für Calc

danke!

Sascha

Re: Programmierhilfe Makro in Basic "Datum zurückgeben&

Verfasst: Mo, 27.03.2006 12:53
von pmoegenb
sascha11 hat geschrieben:hey!

ich benötige eine Funktion, die mir, wenn ich einen Wert im Format 24.1.2006 oder 24.01.2006 übergebe, mir den Monat in Form von 1-12 zurückgibt- kann mir das jemand programmieren, in Basic für Calc
Existiert doch bereits als Funktion

Code: Alles auswählen

=Monat(DATUM)
.

Verfasst: Mo, 27.03.2006 15:31
von sascha11
danke, aber wenn ich das im Makro aufrufe, erhalte ich die Fehlermeldung

Sub- oder Function Prozedur nicht definiert, hier mein Aufruf:
Datum=Monat(oT1.getCellRangeByName (sBereichtemp))

danke!

Sascha

P.S.: Datum ist ein integer, sBereichtemp enthält B2 als Inhalt, also ein String

Verfasst: Mo, 27.03.2006 15:42
von pmoegenb
sascha11 hat geschrieben:danke, aber wenn ich das im Makro aufrufe, erhalte ich die Fehlermeldung

Sub- oder Function Prozedur nicht definiert, hier mein Aufruf:
Datum=Monat(oT1.getCellRangeByName (sBereichtemp))

danke!

Sascha

P.S.: Datum ist ein integer, sBereichtemp enthält B2 als Inhalt, also ein String
Hallo Sascha,

Du hast mich falsch verstanden.

Code: Alles auswählen

Monat()
ist eine Funktion von Calc.

Hier ein kleiner Auszug aus dem Basic Programmierhandbuch von SUN:

Extrahieren von Datums- und Zeitangaben

 Day(MyDate) – liefert den Tag des Monats von MyDate
 Month(MyDate) – liefert den Monat aus MyDate
 Year(MyDate) – liefert das Jahr von MyDate
 Weekday(MyDate) – Liefert die Nummer des Wochentags von MyDate
 Hour(MyTime) – Liefert die Stunde aus MyTime
 Minute(MyTime) – Liefert die Minuten aus MyTime
 Second(MyTime) – Liefert die Sekunden aus MyTime

Das Programmierhandbuch (Deutsch) kannst Du von http://docs.sun.com/app/docs/doc/819-1326 herunterladen.

thx

Verfasst: Mo, 27.03.2006 15:52
von sascha11
danke, so ein Handbuch ist praktisch!

danke

Verfasst: Di, 28.03.2006 11:32
von sascha11
hey!

ich kann leider nur einen String an die Funktion übergeben, kein formatiertes Datum, kann mir jemand das programmieren (z. Bsp.: 24.1.2006 als String oder 24.01.2006?

danke,

Sascha

Re: danke

Verfasst: Di, 28.03.2006 11:58
von pmoegenb
sascha11 hat geschrieben:hey!

ich kann leider nur einen String an die Funktion übergeben, kein formatiertes Datum, kann mir jemand das programmieren (z. Bsp.: 24.1.2006 als String oder 24.01.2006?
Hallo Sascha,

wenn Du die Funktion Monat() meinst, dann trifft dies nicht zu.

Beispiel: In der Zelle A1 habe ich das Datum 24.01.2006 formatiert als Kategorie Datum und Format tt.mm.jjjj.

Mit der Funktion

Code: Alles auswählen

=Monat(A1)
erhalte ich die Ziffer 1.

hi

Verfasst: Di, 28.03.2006 12:40
von sascha11
hi Peter,

danke für deine Antwort, sorry, ich habe undeutlich geschrieben:
Ich muss an die Funktion im Makro einen String übergeben und habe dazu die Funktion month(myDate) benutzt, die erwartet aber ein Datum, deshalb benötige ich eine Funktion, die meinen String (Datum-> 24.1.2006 oder 2.01.06) nimmt und mir den Monat als integer zurückgibt.
in Basic:
integer programmierte Funktion (string im Format 24.1.2006 ider 2.01.06)

Danke!!

Sascha

Verfasst: Di, 28.03.2006 13:13
von Karolus
Als Tabellenfunktion würde ich es mit :
=MONAT(WERT(A1)) probieren.

vielleicht funktioniert in basic dann:

month(value(deindatumsstring) ??

Gruß Karo

ps. das ist hier das Calc-forum nicht das Basic-forum

leider nein

Verfasst: Di, 28.03.2006 13:18
von sascha11
hi Karo,

geht leider nicht!
kommt "sub oder function nicht definiert"!

danke,

Sascha

Verfasst: Di, 28.03.2006 14:15
von sascha11
Dim stest As Date
stest = oT1.getCellRangeByName(sBereichtemp).string
Datum=Month(stest)

das funktioniert, solange das Feld nicht NULL ist, denn sobald nichts drinsteht, ist der Wert von stest = 00:00:00
dann liefert Month 12 zurück

hat jemand eine Idee, wie das noch funktionieren kann?

Verfasst: Di, 28.03.2006 15:14
von pmoegenb
sascha11 hat geschrieben:Dim stest As Date
stest = oT1.getCellRangeByName(sBereichtemp).string
Datum=Month(stest)

das funktioniert, solange das Feld nicht NULL ist, denn sobald nichts drinsteht, ist der Wert von stest = 00:00:00
dann liefert Month 12 zurück

hat jemand eine Idee, wie das noch funktionieren kann?
Hallo Sascha,

möglicher Weise klappt es so

Code: Alles auswählen

Dim stest As Date
Datum=0
If Not IsNull(oT1.getCellRangeByName(sBereichtemp).string) then
    stest = oT1.getCellRangeByName(sBereichtemp).string
    Datum=Month(stest)
End If
 

Verfasst: Di, 28.03.2006 15:28
von sascha11
hi Peter,

danke!

leider liefert mir Datum weiterhin 12 zurück, also er geht in die if- Bedingung, obwohl das Zielfeld keinen Wert enthält, verstehe ich nicht!

Danke!

Sascha

Verfasst: Di, 28.03.2006 15:46
von pmoegenb
Hallo Sascha,

vielleicht funktioniert das Schlüsselwort IsNull nicht. Probiers mal so

Code: Alles auswählen

Dim stest As Date
If oT1.getCellRangeByName(sBereichtemp).string)=""  then
    Datum=0
else
    stest = oT1.getCellRangeByName(sBereichtemp).string
    Datum=Month(stest)
End If 

jetzt geht es!

Verfasst: Mi, 29.03.2006 11:18
von sascha11
hi Peter,

danke- jetzt geht es!

hast du noch eine Idee, woran es liegt, dass ich hier die Fehlermeldung
"Falscher Wert für Eigenschaft" erhalte?

[code]
If oT1.getCellRangeByName(sBereichtemp3) = "ja" Then
Code
End If
[/code]

Die Variable sBereichtemp3 enthält in diesem Fall den Wert
liste.O3
und hier steht als Text formatiert
"ja"
drin

mit
If (oT1.getCellRangeByName(sBereichtemp3).string) = "ja" Then
und
If (oT1.getCellRangeByName(sBereichtemp3).text) = "ja" Then
geht es auch nicht (selbe Fehlermeldung).

danke!

Sascha