W tej chwili makro pobiera dane z jednej kolumny i wstawia wybraną wartość. A chciałbym to tak zmienić, żeby w polu listy były jedne wartości a wstawione drugie. To znaczy, chciałbym mieć pole listy składające się z dwóch kolumn, w pierwszej numer, w drugiej nazwisko. W polu listy chciałbym wyświetlać numer a wstawiać nazwisko z sąsiedniej kolumny.
Jak zmodyfikować moje makro, żeby tak się dało zrobić?
Kod: Zaznacz cały
Sub WstawNazwisko
oDoc = ThisComponent
oSheet = oDoc.getSheets.getByName("Arkusz1")
oForm = oSheet.DrawPage.Forms.getByIndex(0)
oThisIsMyListBox = oForm.getByName("Nazwiska")
'fragment pobierający adres aktywnej komórki do której zostanie wpisana wartość z pola listy
oSelection = oDoc.CurrentController.getSelection
oRangeAddress = oSelection.getRangeAddress
wiersz = oRangeAddress.StartRow 'current row
kolumna = oRangeAddress.StartColumn 'current column
'pętla tworząca pole listy na 30 pozycji
With oThisIsMyListBox
.LineCount = 30
.HelpText = "Wybierz wartość z tej listy"
End With
'zaznacza zakres komórek do pobrania wartosci do pola listy
dim RangeAddr as new com.sun.star.table.CellRangeAddress
RangeAddr.EndColumn = 1
RangeAddr.EndRow = 64
RangeAddr.Sheet = 0
RangeAddr.StartColumn = 1
RangeAddr.StartRow = 35
'pobranie wartości do pola listy
dim initParam(0) as new com.sun.star.beans.NamedValue
initParam(0).Name="CellRange"
initParam(0).value = RangeAddr
CellRangeListSource=oDoc.createInstanceWithArguments("com.sun.star.table.CellRangeListSource", initParam )
oThisIsMyListBox.setListEntrySource CellRangeListSource
'wpisuje w aktywną komórkę wartość z listbox, przez klinięcie
z_listy=oThisIsMyListBox.CurrentValue
oSheet.getCellbyPosition(kolumna,wiersz).setString(z_listy)
End Sub
Kod: Zaznacz cały
RangeAddr.EndColumn = 1
.................
RangeAddr.StartColumn = 0
................