Kopiowanie formuł, adresy względne

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO

Kopiowanie formuł, adresy względne

Postprzez krzynio » Pt lip 12, 2019 10:53 am

Witam!
Otóż mam problem z kopiowaniem formuł. Korzystając z poniższej procedury kopiuję formuły z wiersza TemlateRow to kolejnych wierszy Row
Problem w tym, że takie kopiowanie kopiuje adresy bezwzględne formuł, tzn. jeżeli w komórce w wierszu TemplateRow mam formułę =A1*B1 to to zostanie ona skopiowana dokładnie taka jaka jest, podczas gdy ja chciałbym, by formuła kopiowała się tak jak po przeciągnięciu komórki w dół, czyli aby w kolejnych kopiowanych wierszach, wiersze z formuły też były inkrementowane czyli =A2*B2, =A3*B3 itp. Jak to zapisać? Czy jest możliwe w VBA?

Kod: Zaznacz cały   Rozszerz widokZwiń widok
   
for Row=StartRow to RowCount-2
   for Col=StartCol to ColCount
      sh1.getCellByPosition(Col, Row).Formula = sh1.GetCellByPosition(Col, TemplateRow).Formula
   Next Col
Next Row
LibreOffie 6.1, Debian Testing x64
krzynio
 
Posty: 1
Dołączył(a): Pt lip 12, 2019 10:40 am

Re: Kopiowanie formuł, adresy względne

Postprzez belstar » Pt lip 12, 2019 9:00 pm

krzynio napisał(a): Czy jest możliwe w VBA?

Jest, choć nie tak prosto jak przy przeciąganiu.

Pętle już masz, dodaj licznik. wydobądź adresy ze zmiennych Col i Row, dodaj do adresów licznik i tak stworzysz nowy adres dla każdej iteracji pętli. Trochę programowania w basicu i to koniec.

Takiej prostej metody na wykonanie tego nie ma, lub o takiej nie słyszałem.

Edit: (sorry) Nie ze zmiennych Col i Row ale z:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Twoja_zmienna_Adres = sh1.getCellByPosition(Col, Row).Formula

Bedzie to tekst (string), więc musisz korzystać z funkcji tekstowych basica, left, right, instr, mid itp.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
belstar
 
Posty: 648
Dołączył(a): Cz mar 17, 2011 9:08 am


Powrót do Makra i programowanie

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość