CALC: Schichtplan/Ruhezeiten aus VBA übersetzen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: übersetzung vba ins basic

Beitrag von balu »

Hallo oooNOOP,
der soll in einem tabellenblatt einen schichtplan automatisch erstellen.
Muss er unbedingt per Makro erstellt werden? Könnte nicht auch eine Foremellösung in betracht gezogen werden? Ich weiß ja nicht wie gut Du dich mit Excel, bzw. Calc auskennst, aber vielleicht kommst Du ja mit diesem Thread hier weiter. Ansonsten melde dich einfach wieder.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: übersetzung vba ins basic

Beitrag von balu »

Hallo oooNOOP,
...hatte ich auch schon in betracht gezogen....
Und das soll ich dir so glauben? Nach noch nicht mal 5 Minuten nach meinem ersten Beitrag verwirfst Du meinen Vorschlag.

wird aber grade wegen der einzuhaltenden ruhezeiten immer eine sehr umfangreiche formel!!
Wird denn die Arbeitszeit ganz individuell, oder aber nach einem fest vorgegebenen Rhythmus erstellt, also immer wiederkehrend? Ich werd da nämlich aus deiner mageren Beschreibung nämlich nicht schlau draus.

Gib uns mal ne Beispieldatei wo die Schichten aufgelistet sind. Und vor allem wie die Regelungen dafür lauten.


Dein selbst umgeschriebener Code kann so nicht funktionieren. Denn Du deklarierst die Variablen zwischen einer leeren Sub und einer Function. Und das bedeutet dann nämlich, das die Variablen der Function nicht zur Verfügung stehen.

Code: Alles auswählen

End Sub

Const TAGOFFSET as Long = 2
Dim dDatum as Date
Dim nLetzteDienstSchicht as Long
Dim r as Long, c as Long

Function....
Entweder Du deklarierst in der Function, oder aber Du schmeißt die Leere Sub raus und machst dadurch eine Öffentliche daklaration.
http://www.dannenhoefer.de/faqstarbasic ... ml#Zweig80
http://www.dannenhoefer.de/faqstarbasic ... ml#Zweig81


Ich habe auch keine große Lust dazu deinen umgeschriebenen Code zu testen, da ich nicht nachvollziehen kann wie Du an raDatum kommst.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Karolus
********
Beiträge: 7441
Registriert: Mo, 02.01.2006 19:48

Re: übersetzung vba ins basic

Beitrag von Karolus »

Hallo
kann leider keine Datei hochladen, die das veranschaulicht!
Doch, könntest du schon, wenn du dir die "Mühe" machst dich hier zu registrieren und anzumelden.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
hawe
****
Beiträge: 151
Registriert: Di, 05.08.2008 19:47

Re: CALC: Schichtplan/Ruhezeiten aus VBA übersetzen

Beitrag von hawe »

Neben den angesprochenen Fehlern ist das Hauptproblem bei

If raDatum.Parent.Cells(r, c) = 1 Then

Das ist ist auch in VBA eine Hammerkonstruktion - Seiteneffekt duch Zugriff auf die aufrufende Tabelle.
Du musst der Funktion den Tabellenbereich auf den zugegriffen wird mit geben im Functionheader, etwa

Function IstDienst(nDienstschicht As Long, dDatum As Date, Dienstplan as Variant, Optional raBereichLetzterDienst As Range)

und dann die Zeile r und Spalte c in der Variablen Dienstplan lesen - r,c sind ggf. auf diese neue Situation anzupassen.

Mit anderen Worten ohne den Aufbau von Dienstplan zu kennen kan hier keiner helfen...
Gruss HW
Win7/SuSe 11.2 - LO 3.3
Antworten