strycekxxx napsal(a)Dobrý den, v OO se mi nedaří jednoduše vložit číslo, nebo text do více buněk najednou. V Excelu jsem používal ctrl+c.Jsem schopný to nakopírovat do tažením označených buněk, ale u vícenásobného výběru to nejde.Děkuji za pomoc.
Na starém portálu byl kdysi odkaz na makro, které dodnes používám a které dostatečně řeší Váš požadavek. Dále řeší případy, kdy potřebuji kopírovat (roztáhnout) hodnotu do viditelných buněk při použití filtru. Škoda, že se tato možnost dosud neobjevila v možnostech Calcu.
Postup je takový, že do schránky zkopíruji hodnotu, označím buňky, kam chci kopírovat a spustím makro SelectionVisiblePaste:
Sub SelectionVisiblePaste
' Procedura SelectionVisiblePaste vlozi data ze schranky
' pouze do viditelnych vybranych bunek.
' ve schrance musi byt data, ktera lze umistit do jedne bunky
' To se hodi ve dvou pripadech
' 1) pri vkladani hodnoty do vyfiltrovanych oblasti
' 2) pri vkladani hodnoty do nesouvislych oblasti.
dim oControl as object, oList as object, oBunka as object
dim oRozsahy as object, oRozsah as object
dim oDoc as object, oDisp as object
dim Oblast as long, Sloupec as long, Radek as long
dim PrvniBunka as boolean
' nastaveni objektu
set oControl = ThisComponent.CurrentController
set oDoc = oControl.Frame
set oDisp = createUnoService("com.sun.star.frame.DispatchHelper")
set oList = oControl.ActiveSheet
set oRozsahy = oControl.getSelection()
PrvniBunka = true
on error goto CHYBA ' oznameni pripadne chyby
ThisComponent.LockControllers ' Zakaz zobrazovani
' pokud je vice oblasti, prochazej je postupne
if oRozsahy.getImplementationName="ScCellRangesObj" then
for Oblast = 0 to oRozsahy.Count-1
set oRozsah = oRozsahy(Oblast)
gosub PROJDI
next
else
set oRozsah = oRozsahy
gosub PROJDI
end if
goto KONEC
PROJDI:
' projde vsechny bunky rozsahu a vlozi do viditelnych obsah schranky
with oRozsah.RangeAddress
for Sloupec = .StartColumn to .EndColumn
if oList.Columns(Sloupec).isVisible then
for Radek = .StartRow to .EndRow
if oList.Rows(Radek).isVisible then
if PrvniBunka then ' do prvni bunky vloz obsah schranky
set oBunka = olist.getCellByPosition(Sloupec, Radek)
oControl.select(oBunka)
oBunka.clearContents(com.sun.star.sheet.CellFlags.VALUE _
+ com.sun.star.sheet.CellFlags.STRING _
+ com.sun.star.sheet.CellFlags.DATETIME _
+ com.sun.star.sheet.CellFlags.FORMULA)
dim a(5) as new com.sun.star.beans.PropertyValue
a(0).Name = "Flags": a(0).Value = "SVDF"
a(1).Name = "FormulaCommand": a(1).Value = 0
a(2).Name = "SkipEmptyCells": a(2).Value = false
a(3).Name = "Transpose": a(3).Value = false
a(4).Name = "AsLink": a(4).Value = false
a(5).Name = "MoveMode": a(5).Value = 4
oDisp.executeDispatch(oDoc, ".uno:InsertContents", "", true, a())
PrvniBunka = false
else ' zbyle bunky kopiruj z prvni bunky
olist.getCellByPosition(Sloupec, Radek).formula = oBunka.formula
end if
end if
next
end If
next
end with
return
CHYBA:
msgbox "Někde se stala chybička"
KONEC:
ThisComponent.UnlockControllers 'Povol zobrazovani
oControl.select(oRozsahy) ' nakonec vyber puvodni select
on error resume next
end sub