Kolumny i wiersze

Z Henryk Dąbrowski
Skocz do: nawigacja, szukaj
22.03.2020




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()
    MsgBox "Liczba wierszy w arkuszu: " & oSht.getRows().getCount()
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



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
    Dim m as Long, n as Long
    s = ThisComponent.getCurrentController().getActiveSheet().getCellByPosition(nCol, 1).AbsoluteName
    m = InStr(2, s, "$")
    n = InStr(m+1, s, "$")
    ColumnNumToName = Mid(s, m+1, n-m-1)
End Function
Sub Kolumny_i_Wiersze_ColumnNumToName()
    MsgBox ColumnNumToName(0) 'A
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