Programmierhilfe Makro in Basic "Datum zurückgeben"

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

sascha11
***
Beiträge: 82
Registriert: Di, 10.01.2006 11:21

Programmierhilfe Makro in Basic "Datum zurückgeben"

Beitrag 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
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

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

Beitrag 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)
.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
sascha11
***
Beiträge: 82
Registriert: Di, 10.01.2006 11:21

Beitrag 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
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Beitrag 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.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
sascha11
***
Beiträge: 82
Registriert: Di, 10.01.2006 11:21

thx

Beitrag von sascha11 »

danke, so ein Handbuch ist praktisch!
sascha11
***
Beiträge: 82
Registriert: Di, 10.01.2006 11:21

danke

Beitrag 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
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: danke

Beitrag 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.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
sascha11
***
Beiträge: 82
Registriert: Di, 10.01.2006 11:21

hi

Beitrag 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
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Beitrag 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
sascha11
***
Beiträge: 82
Registriert: Di, 10.01.2006 11:21

leider nein

Beitrag von sascha11 »

hi Karo,

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

danke,

Sascha
sascha11
***
Beiträge: 82
Registriert: Di, 10.01.2006 11:21

Beitrag 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?
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Beitrag 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
 
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
sascha11
***
Beiträge: 82
Registriert: Di, 10.01.2006 11:21

Beitrag 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
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Beitrag 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 
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
sascha11
***
Beiträge: 82
Registriert: Di, 10.01.2006 11:21

jetzt geht es!

Beitrag 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
Antworten