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

#1 26. 5. 2017 17:40:30

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

ActiveCell LO

Dobrý den. Potřeboval bych poradit. V excelu sem používal funkci ActiveCell = tlaticko.Caption. Sloužila k tomu abych dopsal do aktivní buňky titulek z tlačítka. Potřbeboval bych to samé teď udělat i v LibreOffice ale vůbec si nevím rady. Uměl by mi někdo prosím pomoct, Děkuji.

Offline

#2 26. 5. 2017 17:58:17

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

Re: ActiveCell LO

Trošku podivné zadání. Active cell je vždy aktivně vybraná buňka stajně jako active sheet ap. Ale tomu dalšímu nerozumím :
Sloužila k tomu abych dopsal do aktivní buňky titulek z tlačítka
     To je popis zřejmě zcela nesprávný. Do té buňky se měl opisovat titulek (název) tlačítka? A to fungovalo jak - stisklo se tlačítko a to co mělo tlačítko jako titulek (název, pomocný text?) se napsalo do té buňky? - Velmi podivné a ještě méně účelné.
     Myslím že by to mělo být buď naopak : "název" z buňky se měl dosadit do názvu nebo pomocného textu tlačítka. Ale to by pak byla nejaká úprava pro runtime konstrukce.
     Spíš ale mělo být tlačítkem vyexportování něco z té buňky do nějakého názvu (sešitu, listu, adresář a podobně).


     Nesmyslné na tom je že když je konstantní tlačítko (beze změny) tak mívá jediný výraz v titulku, nebo názvu (a nebo něco více z pomocného textu). Tohle by se opsalo 1x a co potom. Prostě určitě ta potřeba spočívá v něčem úplně jiném. Hrozný popis.

Editoval neutr (26. 5. 2017 18:01:23)


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 26. 5. 2017 18:23:29

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

Re: ActiveCell LO

Moje Makro vypadá takto:
Dim List
Dim Bunka
List= thisComponent.Sheets(0)
Bunka = List.getCellByPosition(4,2)
Bunka.String = "Aja"

A já potřebuju aby místo pozice (4,2) se String vypisoval do vybrané bunky.

Offline

#4 26. 5. 2017 18:33:37

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

Re: ActiveCell LO

To není problém. Ta buňka kam se to napíše bude pokoždé jinde? například tam kde je kurzor?
     To "aja" se bude asi nějak měnit ale s tím si zřejmě poradíte. Potvrďte že potřebujete aby se obsah stringu (text) definovaný v makru vypsal do buňky kde je kurzor. (Například postavíte kurzor do buňky C12 - a makro tam nakopíruje "aja". Když se postavíte do H25 - tak se "aja" nakopíruje tam.
     Celkem běžná potřeba - vypisuje se text nějaké hlášky do kontrolovaných buněk. Nejspíš do zápisu plateb - prochází se seznam a tam kde je kurzor se vkládá "zapalaceno", nebo "prověřit" a podobně.


     PS - Má to být tlačítko, nebo tam potřebujete spíš klávesovou zkratku? Tlačítko lze udělat nad tabulkou v pruhu hlavní nabídky (například vedle nápovědy). Také je možné, že to potřebujete nad všemi různými sešity - tedy nejen nad jedním konkrétním.

Editoval neutr (26. 5. 2017 18:37:36)


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

#5 26. 5. 2017 19:01:23

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

Re: ActiveCell LO

Otestujte toto :

Function MyTxT
Dim oCell As Object
Dim s, str as string 
oCell = ThisComponent.CurrentController.getSelection() 
With oCell.RangeAddress 
SH = .Sheet 
SC = .StartColumn 
SR = .StartRow
End With 
oDoc = ThisComponent
Hlaska = "aja"
End Function 

     Tohle je funkce která se spouští jako vzorec =MYTXT() Takže k tomu žádné tlačítko není potřeba

Sub Hlaska
Dim oCell As Object
Dim s, str as string 
oCell = ThisComponent.CurrentController.getSelection() 
With oCell.RangeAddress 
SH = .Sheet 
SC = .StartColumn 
SR = .StartRow
End With 
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = ThisComponent
Sheet = Doc. Sheets ( SH )
Cell = Sheet. getCellByPosition ( SC , SR )
oCell.string = "aja"
End sub 

A tohle je makro které dělá to co potřebujete.


Je tam maličko více kódu který je zbytečný ale přepsal jsem makto k jinému účelu.

Editoval neutr (26. 5. 2017 19:10:49)


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 26. 5. 2017 19:09:00

Tajnejdrop
Člen
Registrace: 26. 5. 2017
Příspěvků: 10

Re: ActiveCell LO

Děkuji, ale už sem to vyřešil. Ještě bych se chtěl zeptat zda-li nevíte jak vyřešit situaci kdy potřebuju vyplnit bunky Podle zadané hodnoty. Tedy jestli bude v bunce hodnota 2, tak se zbarví vedle ní 2 bunky třeba na zeleno, a pokud bude hodnota 5 tak se zabarví 5 bunek.

Offline

#7 26. 5. 2017 19:16:27

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

Re: ActiveCell LO

To se dá dělat třemi způsoby. Buď podmíněným formátem, nebo makrem a nebo vzorcem.
     Vzorec je poměrně omezený na počet barev. Podmíněný formát může mít nekonečně barev a podmínek. Makro samozřejmě může vše ale podbarvení je tvrdé. Při podmíněném formátu se po zrušení parametru  buňka sama "odbarví". To je celkem praktičtější nežli makro.


     Podívejte se na FORMÁT > PODMÍNĚNÉ FORMÁTOVÁNÍ > PODMÍNKA. Může tam být vzorec například A1 = 2 a zadáte barvu pozadí, nebo typ písma a podobně. Jen musíte dávat pozor při kopírování. Když napíšete správně podmínku například pro
B1 | A1 >= 2 tak se podbarví B1 vždy
C1 | A1 >= 3 tak se podbarví C1 vždy
D1 | A1 >= 4 tak se podbarví D1 vždy
E1 | A1 >= 5 tak se podbarví E1 vždy
.......
..tak se vybarví do pravé strany tolik buněk kolik zadává hodnota.

Editoval neutr (26. 5. 2017 19:34:13)


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

Zápatí