Probleme bei Zellen mit Farbe füllen

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

Moderator: Moderatoren

cldi
*
Beiträge: 11
Registriert: Do, 09.11.2006 18:02

Probleme bei Zellen mit Farbe füllen

Beitrag von cldi »

Hallo,

bastel jetzt einige Tage schon an diesem Problem und komm leider nicht weiter :(

Sachverhalt:

Wenn in einer Zelle zwischen C6 und AG6 (bzw. C12 - AG12 und C18 - AG18) ein "U" eingegeben wird, soll der ein bestimmter Bereich eingefärbt werden.
Beispiel: Eingabe U in D6 --> eingefärbter Bereich von D5-D10

Mit folgendem Code habe ich zwar etwas eingefärbt, jedoch nicht den Bereich, den ich will.
Vorallem wundert es mich, dass er die Zeileneinfärbung bis zum Ende macht, obwohl durch die For-Schleife eine Begrenzung eingebaut ist.

Code: Alles auswählen

Sub UpdateColors

Dim x As Integer
Dim y As Integer
Dim oSheet As Object
Dim oZelle As Object

oSheet = thisComponent.getCurrentController.getActivesheet()

 For x = 5 To 17 Step 6			
 	For y = 3 To 33    			
         oZelle = oSheet.getCellByPosition(y,x)
     
        If (UCase(oZelle.string) = "U") Then
            oSheet.getCellByPosition(y,x).Value = "U"
        
          oSheet.getCellByPosition(y-1,x).CellBackColor =_
	  rgb(255,255,0) 
	  oSheet.getCellByPosition(y,x).CellBackColor =_
	  rgb(255,255,0)
	  oSheet.getCellByPosition(y+1,x).CellBackColor =_
	  rgb(255,255,0) 
	  oSheet.getCellByPosition(y+2,x).CellBackColor =_
	  rgb(255,255,0) 
	 ' oSheet.getCellByPosition(y+3,x).CellBackColor =_
	  'rgb(255,255,0) 
	 ' oSheet.getCellByPosition(y+4,x).CellBackColor =_
	  'rgb(255,255,0) 
	   	            
    	ThisComponent.sheets(0).rows(y).CellBackColor =_
		rgb(255,255,0) 
		            
      end if 
     Next y
  Next x

End Sub
Kann mir jemand bei dem Problem helfen??

Danke schon mal....
Zuletzt geändert von cldi am Do, 30.11.2006 12:33, insgesamt 1-mal geändert.
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey cldi,

also, weisst du überhaupt, was du da so alles machst?

Fangen wir oben an:

oSheet enthält nun dein gerade aktives Tabellenblatt.

Deine verschachtelte For-Schleifen liefern dir jede 6. Zeile von Zeile 6 bis Zeile 18 (also die Zeilen 6, 12 und 18) sowie die Spalten 4 bis 34 dieser Zeilen.(E-...)
Für jede Zelle prüfst du nun, ob darin ein "u" steht, dann solle etwas passieren.
Zunächst soll die Zelle den Wert "U" erhalten???? "U" ist ein String, kein Wert. Das müsste String heissen- im Extremfall sollte es auch mit "formular" gehen, aber eigentlich sollte es einen Fehler geben.
Dann färbst du die Zellen der gleichen Zeile, aber der Spalten vor , die aktuelle selbst sowie die der beiden folgenden ein.
Und dann noch die Zeile mit der Indexnummer der Spalte des ersten Tabellenblattes. ???

Hmm, und wie soll das nun mit deiner Aufgabestellung übereinstimmen?

Im Prinzip müsste es so laufen:

Code: Alles auswählen

 oSheet = thisComponent.getCurrentController.getActivesheet()

 For x = 5 To 17 Step 6     'Zeile    
    For y = 3 To 33           ' Spalte  
        oZelle = oSheet.getCellByPosition(y,x)
        If (UCase(oZelle.string) = "U") Then
          oSheet.getCellByPosition(y,x).String = "U"
       
          For i = 0 to 5  'Zählwert 5 Zellen
          	oSheet.getCellByPosition(y,x-1+i).CellBackColor =_
     rgb(255,255,0)
           next
  '    ThisComponent.sheets(0).rows(y).CellBackColor =_
   '   rgb(255,255,0)
                 
      end if
     Next y
  Next x
Also, das färbt dir die 5 Zellen entsprechend dem Bild ein, was diese "sheet(0).row(y) ... machen soll, weiss ich nicht. Da musst du selbst ein wenig experimentieren.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten