Kolumny i wiersze
Dodawanie i kasowanie kolumn i wierszy
Sub Kolumny_i_Wiersze_1()
'dodawanie i kasowanie kolumn i wierszy
Dim oSheets as Object, oSht as Object
oSheets = ThisComponent.getSheets() 'uchwyt do skoroszytu
oSht = oSheets.getByIndex(0) 'uchwyt do pierwszego arkusza
oSht.getColumns().insertByIndex(3, 1) 'dodaje jedną (drugi parametr) kolumnę na pozycję czwartą (pierwszy parametr)
oSht.getRows().removeByIndex(5, 2) 'usuwa dwa wiersze (drugi parametr): szósty i siódmy wiersz (pierwszy parametr)
MsgBox "Liczba kolumn w arkuszu: " & oSht.getColumns().getCount() '1024
MsgBox "Liczba wierszy w arkuszu: " & oSht.getRows().getCount() '1048576
End Sub
Widzimy, że w przypadku wielu operacji na kolumnach określonego arkusza (powiedzmy pierwszego) kod może ulec uproszczeniu, gdy zdefiniujemy obiekt:
oColumns = ThisComponent.getSheets().getByIndex(0).getColumns()
Obiekt oColumns jest uchwytem do zbioru wszystkich kolumn w danym arkuszu.
Podobnie w przypadku wielu operacji na wierszach określonego arkusza (powiedzmy o nazwie "Test") przydatny jest obiekt:
oRows = ThisComponent.getSheets().getByName("Test").getRows()
Obiekt oRows jest uchwytem do zbioru wszystkich wierszy w danym arkuszu.
Uchwyt do kolumn i wierszy oraz zmiana ich rozmiarów i właściwości
Sub Kolumny_i_Wiersze_2()
Dim oSheets as Object, oSht as Object
Dim oColumns as Object, oRows as Object
oSheets = ThisComponent.getSheets() 'uchwyt do skoroszytu
oSht = oSheets.getByIndex(0) 'uchwyt do pierwszego arkusza
oColumns = oSht.getColumns() 'uchwyt do kolumn pierwszego arkusza
oRows = oSht.getRows() 'uchwyt do wierszy pierwszego arkusza
oColumns.getByIndex(0).Width = 4000 'wybiera pierwszą kolumnę przez indeks i ustawia jej szerokość równą 40 mm
oRows.getByIndex(0).Height = 1500 'wybiera pierwszy wiersz przez indeks i ustawia jego wysokość równą 15 mm
oRows.getByIndex(0).CellBackColor = RGB(255, 0, 0) 'wybiera pierwszy wiersz przez indeks i ustawia kolor tła wiersza
oColumns.getByName("F").IsVisible = False 'wybiera szóstą kolumnę przez nazwę i ją ukrywa
oRows.getByIndex(5).IsVisible = False 'wybiera szósty wiersz przez indeks i go ukrywa
End Sub
Uwaga:
oRows.getByIndex(0).CellBackColor = -1 'ustawia brak koloru
Zmiana nazwy kolumny na indeks kolumny
Function ColumnNameToNum(ColName as String) as Long
'zamienia nazwę kolumny na jej indeks
ColumnNameToNum = ThisComponent.getCurrentController().getActiveSheet(). _
getCellRangeByName(ColName & "1").getCellAddress().Column
End Function
Sub Kolumny_i_Wiersze_ColumnNameToNum()
MsgBox ColumnNameToNum("AA") '26
End Sub
Zmiana indeksu kolumny na nazwę kolumny
Function ColumnNumToName(nCol as Long) as String
'zamienia indeks kolumny na jej nazwę
Dim s as String
s = ThisComponent.getCurrentController().getActiveSheet().getCellByPosition(nCol, 1).AbsoluteName 'np. $Arkusz1.$A$2
ColumnNumToName = Split(s, "$")(2)
End Function
Sub Kolumny_i_Wiersze_ColumnNumToName()
MsgBox ColumnNumToName(0) 'A
MsgBox ColumnNumToName(1023) 'AMJ
End Sub
Kasowanie wierszy i kolumn
Kasowanie wierszy (kolumn) wykonujemy od końca. Przykładowo:
Sub KasujWierszeParzyste()
'kasuje wiersze parzyste do wiersza 502
Dim oRows as Object
Dim k as Long
oRows = ThisComponent.getCurrentController().getActiveSheet().getRows()
For k = 501 To 1 Step -2 'liczbie 1 odpowiada drugi wiersz
oRows.removeByIndex(k, 1)
Next k
End Sub
Sub KasujWierszeNieparzyste()
'kasuje wiersze nieparzyste do wiersza 501
Dim oRows as Object
Dim k as Long
oRows = ThisComponent.getCurrentController().getActiveSheet().getRows()
For k = 500 To 0 Step -2 'liczbie 0 odpowiada pierwszy wiersz
oRows.removeByIndex(k, 1)
Next k
End Sub
Polecane strony internetowe
BASIC Guide – Rows and Columns
Spreadsheet common – Working with rows, columns
LibreOffice Calc – makra Strona główna