J'utilise LibreOffice 3.5.4.2. Je voudrais changer la couleur de fond des cellules en fonction de diverses conditions. En exemple minimum, j'ai la macro / fonction suivante définie: i exécute la fonction en entrant Cependant, je ne peux pas obtenir la fonction de modifier la couleur de fond de la cellule Comment puis-je régler la couleur d'arrière-plan d'une cellule avec une fonction de LibreOffice? P> (J'ai lu sur l'utilisation de "styles", mais n'a pas regardé plus loin à cela parce que j'ai besoin de définir de nombreuses couleurs de fond et ne voulait pas faire de nombreux styles différents. Il est possible de changer manuellement la couleur d'arrière-plan sans utiliser de styles. Je pensais donc qu'il serait possible de faire la même chose de manière programmatique.) P> P> = bgcolor () code> dans une cellule. La cellule dans laquelle cette formule est présente renvoie la valeur de couleur de la première cellule
(0,0) code> ou
A1 code> sur la feuille 1, comme prévu. P>
A1 code>. La couleur de fond de cellule
REM code> dans l'exemple ci-dessus vers Set fort> la couleur d'arrière-plan. P>
3 Réponses :
Cell.BackColor = RGB(50,60,70) should do the trick edit: This works only in lowriter. Thanks Campa.
Je ne sais pas si vous suggérez de remplacer la ligne REM code> dans mon exemple avec votre ligne ou si votre ligne est un exemple distinct. J'ai essayé les deux approches, mais cela n'a pas résolu le problème. Si je remplace la ligne dans mon exemple avec le vôtre, la cellule renvoie
-1 code>.
J'ai suggéré de remplacer la ligne REM. Mais je ne sais pas ce que Konrad a été édité. Peut-être que ce n'est pas lisible. Conviendrait à une logique étrange dans LO. :) API.LIBREOFFICE.org/ Docs / Common / Ref / Com / Sun / Star / Table / ...
Vérifié ma propre macro pour les tables dans Lowriter. Devrait travailler en localc aussi. `Pour NROW = 0 à OTABLE.GETROWS (). Getcount () - 2 avec oTable.GetRrows (). GetByIndex (nrow) Si NROW MOD 2 = 1 puis .backcolor = -1 autre .backcolor = RVB (192, 192, 192) fin si fin de ... Suivant`
@BDONGUS: Votre solution proposée donne Erreur d'exécution de base. Variable d'objet non définie code> erreur.
@Campa: Pouvez-vous poster votre code? Sinon, je ne peux que deviner: vous avez utilisé la boucle sans régler avec une otable?
@BDONGUS Hey: Je viens d'obtenir ma cellule en utilisant feuille.gecellbypposition code>, je n'utilise pas d'objets de table. Alors
mycell.cellbackcolor = rgb (255, 0, 0) code>. Je veux dire, exactement comme Sabrewolfy le faisait.
@Campa: quel objet est indéfini. Si c'est CellBackColor, il pourrait y avoir un bogue dans Calc. Sinon, peut-être que cela aide: lien
@BDONGUS: Non, mon commentaire précédent fait référence à votre relevé code> Cell.backColor code> que vous devez corriger votre réponse à cell.cellbackcolor code> au cas où il s'agit d'une faute de frappe. Dans mon cas, tout se compile bien, mais rien ne se passe simplement sur la feuille (exactement comme la situation de Sabrewolfy). Utilisation de
.CurrentSelection code> comme dans le lien que vous avez donné, jette
com.sun.star.lang.indexoutofboundsException code> sur
getcellbyposition code>.
La ligne doit être (non "REM" là-bas bien sûr, cela ne crée que la ligne commentée) p> considère également le paramètre des feuilles d'être pour d'autres propriétés intéressantes, voir propriétés de la cellule p> p>
Premièrement, il n'y a rien de mal avec votre macro en général. La ligne unique pour définir le CellBackColor est correcte comme indiqué. Le problème est que la fonction est appelée à partir de la feuille que vous essayez de modifier. Une fonction n'est pas autorisée à modifier la feuille à partir de laquelle elle s'appelle. Donc, si vous appelez votre fonction de la feuille 1, puis essayez de changer la couleur d'arrière-plan d'une cellule dans la feuille 1, cela échouera. Si, toutefois, vous avez tenté de modifier la couleur d'arrière-plan d'une cellule sur une feuille 0 lorsque vous appelez de feuille 1, cela fonctionnera comme prévu. P>
Merci. Veuillez modifier votre réponse pour inclure une source / citation pour référence future?
De wiki.openoffice.org/wiki/documentation/ooo3_user_guides/... : "Lorsqu'une macro est appelée une fonction de calcul, la macro ne peut modifier aucune valeur dans la feuille à partir de laquelle la macro a été appelée."
Cependant, dans les versions plus récentes, il est possible de modifier les valeurs cellulaires mais non des attributs de cellule sur la même feuille.
J'ai le même problème: j'ai défini la cellule
CellbackColor CODE> mais rien ne se passe dans la feuille. Avez-vous résolu votre problème finalement? Des idées?