[Gelöst] Calc: Listenfeld und Spalten kopieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

retuwe61
****
Beiträge: 159
Registriert: So, 18.11.2007 21:25

[Gelöst] Calc: Listenfeld und Spalten kopieren

Beitrag von retuwe61 »

Hallo Miteinander.
Bislang habe ich zum Kopieren von Spalteninhalten das nachfolgende Makro mittels einer Vielzahl von Schaltflächen verwendet.
Meine Frage nun:
Besteht die Möglichkeit, das Makro so anzupassen, dass ich statt dessen auf ein Listenfeld (Mehrfachauswahl) zugreifen kann - und es mit einem Button ausführe? So sollen z. B. bei Auswahl des 1., 2. und 4. Listeneineintrages die Inhalte der Spalten [B, C, F, G], [N, O, R, S] sowie [AL, AM, AP, AQ] der "Tabelle1_2" an die selbe Position der Tabelle "Summe" kopiert werden.
Vielleicht hat jemand von den Spezialisten eine Lösung parat.
Ich bin gespannt.
Gruß
Uwe

Code: Alles auswählen

Sub CopyRange(oEvt)
   dim Celloffset as Integer
   oDoc = thisComponent
   oSheet = oDoc.Sheets().getbyname("Tabelle1_2")
   oSheet1 = oDoc.Sheets().getbyname("Summe")
   Celloffset = oEvt.Source.Model.Tag
   nCelloffset = Celloffset -1
   cCols = Array (1,2,5,6)
   for i = 0 To uBound(cCols)
   intCol = nCelloffset * 12 + cCols(i)
   
   getCellString = ThisComponent.sheets().getbyname("Tabelle2").getcellbyposition(27,1).string
	lz = getCellString

   oCellRange = oSheet.getCellRangeByPosition(intCol,0,intCol,lz).getdataarray
   oSheet1.getCellRangeByPosition(intCol,0,intCol,lz).setdataarray(oCellRange)
   next i

End Sub
Zuletzt geändert von retuwe61 am Di, 11.07.2017 17:52, insgesamt 1-mal geändert.
Angewandt wird LibeOffice Version 5.1.6.2
retuwe61
****
Beiträge: 159
Registriert: So, 18.11.2007 21:25

Re: Calc: Listenfeld und Spalten kopieren

Beitrag von retuwe61 »

Hallo miteinander.
Ich habe das Problem selber lösen können.
Gruß
Uwe

Wen es interessiert:

Code: Alles auswählen

sub SelektionKopieren

oDoc = thisComponent
oSheet1 = oDoc.Sheets().getbyname("Summe")
ocursor = oSheet1.createCursor()
ocursor.gotoStart()	
ocursor.gotoEndofUsedArea(false)		
lZe = ocursor.getRangeAddress.endRow
lSp = ocursor.getRangeAddress.endColumn
oRange=oSheet1.getCellRangeByPosition(0,0,lSp,lZe)
oRange.clearContents(1023)

oSheet = oDoc.Sheets().getbyname("Tabelle1_2")
ocursor = oSheet.createCursor()
ocursor.gotoStart()	
ocursor.gotoEndofUsedArea(false)		
lZe = ocursor.getRangeAddress.endRow

Dim i%, s$
aPosList = odialog.getControl("ListBox1").getSelectedItemsPos()

for k=LBound(aPosList) to uBound(aPosList)
aPos = aPosList(k)

cCols = Array (1,2,5,6)
for i = 0 To uBound(cCols)
intCol = aPos(k) * 12 + cCols(i)

oCellRange = oSheet.getCellRangeByPosition(intCol,0,intCol,lZe).getdataarray
oSheet1.getCellRangeByPosition(intCol,0,intCol,lZe).setdataarray(oCellRange)
next i	
next k
end sub
Angewandt wird LibeOffice Version 5.1.6.2
Antworten