Feiertagsabgleich

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

Moderator: Moderatoren

janher62
Beiträge: 9
Registriert: Mi, 21.06.2006 20:13

Feiertagsabgleich

Beitrag von janher62 »

Bin noch ein ziemliche Newbie in Sachen Basic und komme nicht weiter bei folgendem Problem:

In Calc habe ich eine Kalenderdatei mit zwölf Tabellenblättern in denen die einzelnen Monate aufgelistet sind. ZB in Tabellenblatt 1 steht der Monat Januar mit den Tagen 1. bis 31. des Monates in den Zeilen a2 bis AK2; fortlaufend bis Tabelle 12 mit dem Monat Dezember.
Die 13.te Tabelle listet in der Spalte a1:a13 die Feiertage des Jahres auf.
Wie schaffe ich es, dass die Feiertage per Macro abgeglichen werden und die entsprechende Zelle eines Tabellenblattes mit Übereinstimmung eines Feiertages farblich hinterlegt wird?

Code: Alles auswählen

Sub zellenfarben
oSheet = thisComponent.getCurrentController.getActivesheet()

 For x = 1 To 1 Step 1     'Zeile   
    For y = 0 To 38           ' Spalte 
        oZelle = oSheet.getCellByPosition(y,x)
        If oZelle.string = "Sa" Then
         
          For i = 0 to 22  'Zählwert 23 Zellen
             oSheet.getCellByPosition(y,x+i).CellBackColor =_
     rgb(255,255,0)
     oSheet.getCellByPosition(y+1,x+i).CellBackColor =_
     rgb(255,255,0)
           next
 
      end if
     Next y
  Next x 
End Sub

Obiges Beispiel dient der Wochenendhinterlegung eines Samstages. Damit endet jedoch auch schon meine Schlauheit. Vielen Dank für die Hilfe schon vorweg.

Hermann
Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Beitrag von Hömmelmann »

Hallo Hermann,

ich habe mal eine Tabelle nach deinen Angaben gebastelt und die Feiertage mit folgendem Code gelb eingefärbt:

sub FeiertageFaerben
dim monat as integer
dim tag as integer
dim zeile as integer
doc=thiscomponent
ft=doc.sheets(12)
for zeile = 0 to 12
monat=month(ft.getcellbyposition(0,zeile).value)
tag =day(ft.getcellbyposition(0,zeile).value)
zm=doc.sheets(monat-1)
zm.getcellbyposition(tag-1,1).CellBackColor = rgb(255,255,0)
next
end sub

Versuchs mal.


Gruß, Friedhelm
janher62
Beiträge: 9
Registriert: Mi, 21.06.2006 20:13

Re:Feiertage

Beitrag von janher62 »

WOW

Bin hin und weg; jetzt ist mein Problem an dem ich schon länger bastelte gelöst. Wäre noch schöner, wenn ich begreifen würde, was sich "hinter den Zeilen" abspielt.
Danke noch einmal.

Hermann
janher62
Beiträge: 9
Registriert: Mi, 21.06.2006 20:13

Re: Feiertagsvergleich

Beitrag von janher62 »

Sitze schon an einem Folgeproblem:

Der Code von Hömmelmann funktioniert soweit einwandfrei bis zu dem Teil, wo zwischen den Datumszellen sich eine Leerzelle befindet. Und genau das trifft bei meinem Kalender zu. Tja, vielleicht hat ja jemand eine Idee.



Hermann
Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Beitrag von Hömmelmann »

Hallo Hermann,

mit Leerspalten hatte ich nicht gerechnet, obwohl mich deine Spaltenangabe
...mit den Tagen 1. bis 31. des Monates in den Zeilen a2 bis AK2;...
schon stutzig gemacht hat.

Aber mit folgendem Code läßt sich das Problem dann doch recht einfach beheben:

Code: Alles auswählen

sub FeiertageFaerben
	dim monat as integer
	dim tag as integer
	dim zeile as integer
	dim spalte as integer
	doc=thiscomponent
	ft=doc.sheets(12)
	for zeile = 0 to 12
		monat=month(ft.getcellbyposition(0,zeile).value)
		tag  =day(ft.getcellbyposition(0,zeile).value)
		zm=doc.sheets(monat-1)
		for spalte = 0 to 40 '40 ist hier angenommener Wert für die äußerst rechte Spalte
			if day(zm.getcellbyposition(spalte,1).value) = tag then
				zm.getcellbyposition(spalte,1).CellBackColor = rgb(255,255,0)
				exit for
			end if
		next
	next
end sub
Ich habe hier lediglich eine Definition (spalte) eingefügt und statt der direkten Zuweisung der Farbe eine Suchschleife eingebaut.

Gruß, Friedhelm
Antworten