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
.
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.
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
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