Witam
Używam prostego skryptu aby wyczyścić komórki
Zakres = Arkusz.getCellRangeByName("D5:D500")
Zakres.clearContents(5)
To działa dopóki nie włączę ochrony arkusza. Nie wiem dlaczego bo cała kolumna jest odznaczona żeby nie było ochrony komórek.
Problemem może być to że po drodze są scalone komórki w zakresie A-F. Przy testach na wyłączonej ochronie komórek skrypt nie czyścił ich zawartości.
Chciałem przetestować czyszczenie pojedynczych komórek ale VBA zgłasza błąd że nie zadeklarowano metody cells
dokument=ThisComponent
Arkusz=dokument.Sheets.getByName("Arkusz1")
Arkusz.Cells(4,6).ClearContents
VBA nie działa czyszczenie kolumny + chronione komórki
VBA nie działa czyszczenie kolumny + chronione komórki
OpenOffice 4.1.13 na Windows 7
Re: VBA nie działa czyszczenie kolumny + chronione komórki
Do jasnego grzyba zaczęło działać kiedy chciałem ręcznie pozmieniać ochronę komórek.
Okazuje się że pomiędzy Win10 a Win7 inaczej się to zaznacza i inaczej działa z jakiegoś powodu... w formatowaniu komórek.
Okazuje się że pomiędzy Win10 a Win7 inaczej się to zaznacza i inaczej działa z jakiegoś powodu... w formatowaniu komórek.
OpenOffice 4.1.13 na Windows 7
Re: VBA nie działa czyszczenie kolumny + chronione komórki
Myślę, że należy ci się wyjaśnienie.
Komórki scalone.
W rzeczywistości wszystkie komórki wchodzące w skład komórki scalonej są dostępne w strukturze arkusza. Oczywiście nie wprost, ale można się do nich odwoływać. Jeśli scalisz komórki np. A1:D1, to gdziekolwiek w arkuszu możesz wpisać formułę np. =C1, i jeśli w tej komórce jest jakaś wartość, to zostanie ujawniona przez tę formułę.
Jak wstawić taką wartość? Gdy komórki nie są jeszcze scalone, możesz wpisać do nich wartości a przy scalaniu na pytanie, czy przenieść zawartość scalanych komórek do pierwszej z nich, odpowiedzieć — NIE.
W makrach możesz wprost wpisywać do nich lub odczytywać z nich różne informacje.
Wpisanie danych do komórki scalonej wstawia te dane do pierwszej komórki tego scalonego zakresu. Dlatego kasowanie danych w kolumnie D nie objęło danych komórek scalonych, gdyż te dane znajdują się w kolumnie A.
Jeśli chodzi o Basic. W LibreOffice i Apache OpenOffice jest Basic. VBA to Visual Basic for Application dla produktu Microsoft.
Dla obiektu Arkusz należy użyć metody getCellByPosition(), a więc Arkusz.getCellByPosition(4,6).ClearContents
Komórki scalone.
W rzeczywistości wszystkie komórki wchodzące w skład komórki scalonej są dostępne w strukturze arkusza. Oczywiście nie wprost, ale można się do nich odwoływać. Jeśli scalisz komórki np. A1:D1, to gdziekolwiek w arkuszu możesz wpisać formułę np. =C1, i jeśli w tej komórce jest jakaś wartość, to zostanie ujawniona przez tę formułę.
Jak wstawić taką wartość? Gdy komórki nie są jeszcze scalone, możesz wpisać do nich wartości a przy scalaniu na pytanie, czy przenieść zawartość scalanych komórek do pierwszej z nich, odpowiedzieć — NIE.
W makrach możesz wprost wpisywać do nich lub odczytywać z nich różne informacje.
Wpisanie danych do komórki scalonej wstawia te dane do pierwszej komórki tego scalonego zakresu. Dlatego kasowanie danych w kolumnie D nie objęło danych komórek scalonych, gdyż te dane znajdują się w kolumnie A.
Jeśli chodzi o Basic. W LibreOffice i Apache OpenOffice jest Basic. VBA to Visual Basic for Application dla produktu Microsoft.
Dla obiektu Arkusz należy użyć metody getCellByPosition(), a więc Arkusz.getCellByPosition(4,6).ClearContents
AOO 4.1.16 (tylko Win 10), LO 25.8 (x64) na: Win 11, 10, Linux (Mint)
Ważne!
Jeśli twój problem został rozwiązany, edytuj swój pierwszy post, dopisując w temacie [SOLVED].
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, edytuj swój pierwszy post, dopisując w temacie [SOLVED].
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.