Strona 1 z 1
MAKRO KOLORUJ JEŻELI WARTOŚĆ NIELICZBOWA
: wt paź 16, 2018 12:12 pm
autor: Damcioos
Cześć, używałem do tego czasu arkusza do ewidencji czasu pracy. Zliczał mi godziny zwykle/nadliczbowe, soboty, L4, urlopy, opieki itp. Do tego wszystko się ładnie kolorowało za pomocą formatowania warunkowego. Od pewnego czasu mam problem z pracą na pliku, ponieważ znikają kolory z formatowania warunkowego. Czy da się kolorować komórkę przy użyciu makra? Miałoby to działać na zasadzie że jeżeli wartość komórki jest np. "U" to pokoloruj tło komórki na jakiś tam kolor lub zastosuj jakiś styl. Mam makro które się tak zachowuje. ale działa tylko w przypadku gdy w komórce jest wartość liczbowa. Jeżeli mam tekst to tak jakby nie działało. Dodam że plik znajduje się na dysku sieciowym i problem formatowania wynika prawdopodobnie z pracy na pliku z różnych systemów i wersji programu. Zakładam, że makro mogłoby rozwiązać problem niestety nie mam pojęcia jak się za nie zabrać. Czy ktoś mógłby podpowiedzieć od czego zacząć ?
Re: MAKRO KOLORUJ JEŻELI WARTOŚĆ NIELICZBOWA
: wt paź 16, 2018 3:23 pm
autor: Jan_J
na pliku z różnych systemów i wersji programu
Potwierdzam
czasem pracuję na zestawieniach z układami kilkunastu/kilkudziesięciu warunków formatowania warunkowego, działającymi w kilku tysiącach komórek.
Starsze wersje Libre Calc narzekają na zbytnią komplikację układów warunków, a Excel ignoruje niektóre z nich, dość przypadkowo zresztą.
Ale w przypadku makr zgodności Calca z Excel tym bardziej nie będzie. Z wersjami Calca już prędzej.
Re: MAKRO KOLORUJ JEŻELI WARTOŚĆ NIELICZBOWA
: śr paź 17, 2018 8:50 am
autor: Damcioos
Plik działa w różnych wersjach LO czy OO. Nie jest używany na Excellu. Próbowałem kolorowania typu:
Sub Koloruj
for k = 1 to 6
For w = 1 To 31
Cell = ThisComponent.Sheets(0).getCellByPosition(k,w)
v = Cell.value
With ThisComponent.Sheets(1)
If v = "10" Then
Cell.CellBackColor = .getCellRangeByName("B1").CellBackColor
ElseIf v = 20 Then
Cell.CellBackColor = .getCellRangeByName("B2").CellBackColor
End If
End With
Next w
next k
End Sub
Koloruje wszystko ładnie na każdym komputerze. Niestety przyjmuje tylko wartości liczbowe w przeciwnym razie zwraca błąd w makro (np. v="U" lub inną wartość literową to coś się wysypuje). Jak zadeklarować zmienną v żeby działała nie tylko na liczbach?
Re: MAKRO KOLORUJ JEŻELI WARTOŚĆ NIELICZBOWA
: śr paź 17, 2018 11:13 am
autor: Jan_J
// zatwierdziłem post z pytaniem o format pliku roboczego (xls czy ods) -- i znikł. W logach stoi, że został zaakceptowany.
No więc format obcy może być przyczyną problemów. Odczyt i zapis następują przez dodatkowe filtry, które mogą się zmieniać z wersji na wersję oprogramowania, powodując niezgodności. Dwa, że "pojemność" takiego obcego formatu (np. liczba warunków w formatowaniu, liczba wierszy w arkuszu itp.) może być inna niż możliwości oprogramowania. Dotyczy to także zapisu makr w skoroszycie.
Dlatego przed decyzją o użyciu makra sugerowałbym zmianę formatu na ods i sprawdzenie, czy różnice w wersjach Calca nie przeszkadzają. Nie powinny.
Re: MAKRO KOLORUJ JEŻELI WARTOŚĆ NIELICZBOWA
: śr paź 17, 2018 11:40 am
autor: Jan_J
Ad makro rozpoznające typ zawartości komórki. Przypisane do obiektu komórki metody
getString() pobiera tekst wyświetlany w komórce (nawet jeśli jest w niej liczba lub formuła);
getValue() pobiera z niej wartość wynikową (jeżeli nie ma tam liczby, pobierze 0);
getFormula() pobiera tekst formuły;
getType() pobiera numeryczny kod typu zawartości komórki:
0: pusta,
1: liczba,
2: tekst,
3: formuła.
Np.
Kod: Zaznacz cały
d = ThisComponent
s = g.Sheets.getByIndex(0)
c = s.getCellByPosition(0, 0)
napis = c.getString()
liczba = c.getValue()
typ = c.getType()
Patrz
https://www.openoffice.org/api/docs/com ... XCell.html
https://www.openoffice.org/api/docs/com ... tType.html
(dokumentacja jest raczej trudna w lekturze).
Re: MAKRO KOLORUJ JEŻELI WARTOŚĆ NIELICZBOWA
: czw paź 18, 2018 11:40 am
autor: Damcioos
Dzięki za pomoc. getString() działa mi poprawnie. Sprawdziłem też zapis do *.ods, również rozwiązuje wszystkie problemy ze znikaniem formatowania warunkowego. Zostanę chyba przy wersji bez makro.