Cześć,
Potrzebuję znaleźć pierwszą pustą komórkę w danej rubryce za pomocą makra, muszę wyświetlić informację że jest to np n-ty wiersz.
help
z góry dziękuję
Szukaj pustej komórki
Szukaj pustej komórki
Ostatnio zmieniony pn lis 18, 2019 11:28 am przez Jermor, łącznie zmieniany 1 raz.
Powód: Wątek przeniesiony z działu Calc do Makra i programowanie
Powód: Wątek przeniesiony z działu Calc do Makra i programowanie
Libre Office 6.2.0.3
Windows 7
Windows 7
Re: Szukaj pustej komórki
Stwierdzenie
Typ zawartości komórki jest opisany za pomocą jej pola Type, przyjmującego wg dokumentacji https://www.openoffice.org/api/docs/com ... tType.html następujące wartości:
Dostać się do tego pola można dwojako:
* albo przez jego nazwę: obiekt_komórki.Type
* albo przez funkcję pobierającą jego wartość: obiekt_komórki.getType()
Patrz dokumentacja API, np. https://www.openoffice.org/api/docs/com ... XCell.html
Szkic / pseudokod:
nr_wiersza = numer pierwszego sprawdzanego wiersza;
while (komórka w k-tej kolumnie w nr_wiersza-tym wierszu nie jest pusta) {
zwiększ nr_wiersza o 1;
}
przekaż nr_wiersza jako wynik;
Przykładowa realizacja (w Basicu; nie obudowana w funkcji/makro, bo zakładam, że wiesz, jak to zrobić):
Warto pomyśleć o rozsądnej parametryzacji przekazywania danych (niekoniecznie bieżący skoroszyt; niekoniecznie bieżący arkusz; niekoniecznie pierwsza kolumna; niekoniecznie od pierwszego wiersza) i odbioru wartości wynikowej (niekoniecznie wpisywana do komórki -- a jeśli nawet, to niekoniecznie do B1 w tym samym arkuszu).
jest słabo zrozumiałe: `komórka` i `rubryka` to moim zdaniem to samo; prawdopodobnie chodzi Ci o znalezienie komórki w kolumnie (patrz niżej) albo w wierszu (potrzebna drobna modyfikacja poniższej analizy).znaleźć pierwszą pustą komórkę w danej rubryce
Typ zawartości komórki jest opisany za pomocą jej pola Type, przyjmującego wg dokumentacji https://www.openoffice.org/api/docs/com ... tType.html następujące wartości:
W praktyce wartości tych stałych są następujące: EMPTY = 0, VALUE = 1, TEXT = 2, FORMULA = 3. Lepiej jest odwoływać się do nazw symbolicznych, bo kod staje się czytelniejszy i jednocześnie odporny na ew. przyszłe zmiany w specyfikacji.EMPTY cell is empty.
VALUE cell contains a constant value.
TEXT cell contains text.
FORMULA cell contains a formula.
Dostać się do tego pola można dwojako:
* albo przez jego nazwę: obiekt_komórki.Type
* albo przez funkcję pobierającą jego wartość: obiekt_komórki.getType()
Patrz dokumentacja API, np. https://www.openoffice.org/api/docs/com ... XCell.html
Szkic / pseudokod:
nr_wiersza = numer pierwszego sprawdzanego wiersza;
while (komórka w k-tej kolumnie w nr_wiersza-tym wierszu nie jest pusta) {
zwiększ nr_wiersza o 1;
}
przekaż nr_wiersza jako wynik;
Przykładowa realizacja (w Basicu; nie obudowana w funkcji/makro, bo zakładam, że wiesz, jak to zrobić):
Kod: Zaznacz cały
pusty = com.sun.star.table.CellContentType.EMPTY
ark = ThisComponent.Sheets.getByIndex(0)
k = 0
w = 0
while ark.getCellByPosition(k, w).getType() <> pusty
w = w+1
wend
ark.getCellByPosition(1, 0).setValue(w)
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)