Krąwedzie dla każdej komórki z zakresu

Makropolecenia i funkcje w języku Basic
jarekgol
Posty: 1
Rejestracja: śr sie 01, 2018 9:28 am

Krąwedzie dla każdej komórki z zakresu

Post autor: jarekgol »

Witam. Chciałbym sobie obrysować wszystkie używane komórki zwykłą czarną kreską, tak jak się to robi ręcznie, czyli:
zaznaczam użyte komórki, klikam krawędzie, wybieram "okienko" z krzyżykiem w środku i mam.

Nie umiem przepisać tej funkcji do Basic'a. Udało mi się jedynie obrysować cały zakres po zewnętrznych, oto kod:

Kod: Zaznacz cały

Function UsedRange(oSheet As Variant) As Variant
Dim oCursor As Variant
    oCursor = oSheet.createCursor()
    oCursor.gotoEndOfUsedArea(False)
    oCursor.gotoStartOfUsedArea(True)
    UsedRange = oCursor
End Function


Sub Usun
	Dim Doc As Object
	Dim Sheet As Object
	Dim FirstRow As Object
	Doc = ThisComponent
	Sheet = Doc.Sheets (0)
	FirstRow = Sheet.getCellRangeByName("A1:Y1")
	FirstRow.IsTextWrapped = True
	Sheet.Columns.removeByIndex(0,2)
	Sheet.Columns.removeByIndex(1,1)
	Sheet.Columns.removeByIndex(3,2)
	Sheet.Columns.removeByIndex(4,2)
	Sheet.Columns.removeByIndex(5,16)
	Dim kolumna As Object
	kolumna = Sheet.Columns(0)
	kolumna.OptimalWidth = true
	kolumna = Sheet.Columns(1)
	kolumna.OptimalWidth = true

	rem Widoczne krawędzie
	
	Dim BasicBorder as New com.sun.star.table.BorderLine
	Dim oBorder As Object
	dim jTableBorder As New com.sun.star.table.TableBorder
	oBorder = UsedRange(Sheet).TableBorder
	'MsgBox oBorder.getRows().getCount()
	rem Werte für einen einfachen Rand
	BasicBorder.Color =0
	BasicBorder.InnerLineWidth = 0
	BasicBorder.OuterLineWidth = 1
	BasicBorder.LineDistance = 0
	oBorder.LeftLine = BasicBorder
	oBorder.TopLine = BasicBorder
	oBorder.RightLine = BasicBorder
	oBorder.BottomLine = BasicBorder
	UsedRange(Sheet).TableBorder = oBorder
	
	
	
	

End Sub
próbowałem użyć For Each na zakresie typu Range, ale chyba się nie da. Czy jedyną opcją jest przejście zakresu w zwykłych for'ach :( ?
OpenOffice 4.1.5 na Windows 7
ODPOWIEDZ