Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 21. 8. 2015 22:11:26

melda
Člen
Registrace: 21. 8. 2015
Příspěvků: 3

Jak zjistit makrem, které buňky ve sloupci jsou sloučené? - VYŘEŠENO

Zdravím všechny,
narazil jsem na problém, jehož řešení tady marně hledám. Mám sešit v Calcu s x řádky a třemi sloupci. Ve třetím sloupci jsou sloučené i nesloučené buňky. Mám makro, které prohledává tabulku řádek po řádku a zjišťuje, je-li buňka C v řádku x sloučená. Zjistí mi ale, bohužel, jen první sloučenou buňku (např. sloučeny jsou C8:C10, makro indikuje pouze C8). Existuje řešení, jak dosáhnout toho, aby makro indikovalo dle příkladu sloučené buňky C8, C9, C10?
Děkuji předem za jakoukoliv radu.

Editoval melda (22. 8. 2015 13:11:29)

Offline

#2 22. 8. 2015 06:42:50

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Jak zjistit makrem, které buňky ve sloupci jsou sloučené? - VYŘEŠENO

Ne takhle to nefunguje. Z praktického hlediska to ani není možné protože takové buňky neexisují. Samozřejmě technicky jsou pouze přeskočené.
     Je-li například sloučena ve sloupci "C" buňka C2:C4, existuje pouze C1,C2 a pak až C5. Některé vzorce (a makra) při volání sloučené buňky (například C4) vyhazují chybu respektive "N/A". Takové hlášení se musí potlačit. V makru například pomocí ON ERROR GOTO = 0 (existuje více možností). Ve vzorcích se to dělá například pomocí IF(ISERROR(ABC)=1;něco;ABC) a podobně - existuje také více možností.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 22. 8. 2015 10:06:32

melda
Člen
Registrace: 21. 8. 2015
Příspěvků: 3

Re: Jak zjistit makrem, které buňky ve sloupci jsou sloučené? - VYŘEŠENO

Děkuji za odpověď. Bylo by tedy teoreticky možné sloučené "neexistující" buňky zjistit přes chybové hlášení a ne přes funkci ismerged?

Offline

#4 22. 8. 2015 10:56:05

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 769

Re: Jak zjistit makrem, které buňky ve sloupci jsou sloučené? - VYŘEŠENO

Něco takového?

function AdresaSlouceneOblasti(oCell as Object)
  oSheet = oCell.getSpreadsheet()   
  oCursor = oSheet.createCursorByRange(oCell)
  oCursor.collapseToMergedArea() 

  ' Tady už cokoliv, třeba adresa nebo počet buněk, ...
  ' když je víc než jedny, měla by být sloučená
  AdresaSlouceneOblasti = oCursor.absolutename
end function 

Offline

#5 22. 8. 2015 12:40:07

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Jak zjistit makrem, které buňky ve sloupci jsou sloučené? - VYŘEŠENO

Problém je detekce jedné buňky. Ta je totiž sloučena mezi více buňkami. Detekce musí směřovat na nějaký úsek.
     To co poslal "lp." funguje, ale musíte to spustit z cyklu - například takto :

Sub Main
 Dim Doc As Object
 Dim Sheet As Object
 Dim Cell As Object
 Doc = ThisComponent
 Sheet = Doc. Sheets ( 0 )
 For i = 0 To 100
 Cell = Sheet. getCellByPosition ( 1 , i )
 print AdresaSlouceneOblasti(Cell)
 Next i
End Sub

function AdresaSlouceneOblasti(oCell as Object)
  oSheet = oCell.getSpreadsheet()   
  oCursor = oSheet.createCursorByRange(oCell)
  oCursor.collapseToMergedArea() 
  ' Tady už cokoliv, třeba adresa nebo počet buněk, ...
  ' když je víc než jedny, měla by být sloučená
  AdresaSlouceneOblasti = oCursor.absolutename
end function 

     Předpokládám, že to budete umět upravit a použít. Mám podobný systém - posílám bez úpravy :

Sub Main2
DejSloucenebunky(1,0)
End sub

Sub DejSloucenebunky(Column,Row) 
Dim oSheet
Dim oRange
Dim oCursor
Dim oMergedRange
Dim iVar as long
oSheet = ThisComponent.GetSheets().GetByIndex(0)
oRange = oSheet.GetCellRangeByPosition(Column,Row,Column,Row)
oCursor = oSheet.CreateCursorByRange(oRange)
oCursor.CollapseToMergedArea()
With oCursor
With .RangeAddress
oMergedRange = oSheet.GetCellRangeByPosition(.StartColumn,.StartRow,.EndColumn,.EndRow)
End With
'Počet řádků sloučeného úseku
iVar = .Rows.Count
msgbox("Nalezeno " & iVar  & " sloučených buněk ve sloupci číslo "  & Column + 1 ,0,"Sloučené řádky úseku ")
'Počet sloupců sloučeného úseku
'iVar(.Columns.Count)
'msgbox("Nalezeno " & iVar  & " sloučených buněk",0,"Sloučené sloupce úseku")
End With
End Sub

Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#6 22. 8. 2015 13:10:50

melda
Člen
Registrace: 21. 8. 2015
Příspěvků: 3

Re: Jak zjistit makrem, které buňky ve sloupci jsou sloučené? - VYŘEŠENO

Děkuji členům "Ip" a "neutr", oba jste mě navedli na správnou cestu, už to funguje. Použil jsem části řešení od vás obou plus vlastní doplnění pro konkrétní potřebu. Ještě jednou díky...

Offline

Zápatí