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ů: 3,435

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í.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení 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ů: 842

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ů: 3,435

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

Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení 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í