Pole listy, dwie kolumny

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

Pole listy, dwie kolumny

Postprzez krzys59 » So lis 09, 2019 11:55 pm

Zrobiłem sobie jakiś czas temu makro pobierające dane do pola listy a następnie wklejające wybraną wartość z pola listy w aktywną komórkę. Wszystko fajnie działa, ale chciałbym je zmodyfikować.
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   Rozszerz widokZwiń widok

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


Makro pobiera dane z kolumny 2 z podanego zakresu wierszy, wstawia dane do formantu listy "Nazwiska" i po kliknięciu na wybranym nazwisku wstawia je w aktywną komórkę. Jak wybrać dwie kolumny to wiem, ale jeśli wpisuję
Kod: Zaznacz cały   Rozszerz widokZwiń widok
RangeAddr.EndColumn = 1
.................
RangeAddr.StartColumn = 0
................


Czyli dwie kolumny, to wybiera mi dane do listy z pierwszej kolumny i takie wstawia do aktywnej komórki. To, że tak się da to wiem, ale nie wiem jak to zrobić :D
krzys59
 
Posty: 70
Dołączył(a): Pt cze 19, 2009 2:59 pm

Re: Pole listy, dwie kolumny

Postprzez krzys59 » Pn lis 11, 2019 10:14 pm

OK, sam wymyśliłem jak to zrobić :D
Stworzę listbox za pomocą makra w którym będą tylko numerki, wewnątrz makra zrobię array z drugą kolumną danych, po wybraniu w listboxie numerka, będzie pobierana odpowiednia dana z array i to wklejane do arkusza
Wiem, trochę na około ale powinno działać, zwłaszcza że lista jest krótka, tylko 30 pozycji :D
krzys59
 
Posty: 70
Dołączył(a): Pt cze 19, 2009 2:59 pm


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ść