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

#1 27. 3. 2013 12:20:02

rejze
Člen
Registrace: 9. 1. 2013
Příspěvků: 51

Ovládací prvky

Zdravím lidi. Chtěl bych se zeptat,zda lze nějak hromadně rozkopírovat ovládací prvky. Konkrétně jde o dost dlouhý seznam zboží,kde ke každé položce potřebuji přidat zaškrtávací políčko,které po zaškrtnutí změní parametr u dané položky v seznamu. Tento prvek je navázán na buňku pod ním a změna PRAVDA/NEPRAVDA mi mění ten parametr. Leč prvky mohu kopírovat po jedné řádce a aby toho nebylo málo,je ten prvek navázán na buňku ze které jsem ho zkopíroval,takže musím ještě přepisovat číslo buňky. Lze to nějak usnadnit? Díky předem.

Offline

#2 27. 3. 2013 13:01:33

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

Re: Ovládací prvky

Jestli je těch prvků víc jak několik desítek, tak je to špatná cesta. Byl by asi lepší vzorec možná s podmíněným formátem, aby to bylo přehledné.


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 27. 3. 2013 13:33:34

rejze
Člen
Registrace: 9. 1. 2013
Příspěvků: 51

Re: Ovládací prvky

Tak jsem to měl původně. Položka se označila hvězdičkou a parametr se změnil. Jenže dlouhodobě se mi nedaří naučit manželku s tou věcí pracovat,aby nepotřebovala "manuál" na telefonu a tak se to snažím uživatelsky zjednodušit. Klikátko mi přišlo jako dobrej nápad,ale . . .

Offline

#4 27. 3. 2013 17:46:44

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

Re: Ovládací prvky

Poradíte si s makrem? Jedno tlačítko pro všechny případy napojené na makro, nebo funkci které zapíše do aktuální buňky (tam kde je kurzor) například ten křížek. Tlačítko navrchu stránky, kde se neroluje stránka (Okno - ukotvit).

Function AdresFunk()
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
  oSheet = oDoc.Sheets( SH)
  s = oSheet.getcolumns().ElementNames( SH) 
'AdresFunk = s & SR+1 & ":" & s & "10 například" 'Vypíše adresu pole start + 10 řádků
'AdresFunk = s & SR+1                            'Vypíše adresu aktuální buňky
AdresFunk = "x"                                   'Vypíše "x" pro manželku
End Function

Tohle je funkce která se volá normálně v buňce =AdresFunk() . Dáse zavolat z makra například main, a napojit na tlačítko.
Úprava na makro je například takováhle:

Sub AdresFunk
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
  oSheet = oDoc.Sheets( SH)
  s = oSheet.getcolumns().ElementNames( SC) 'vypíše alfabeteicky název sloupce
'----------------------------
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = ThisComponent
Sheet = Doc. Sheets ( SH )
Cell = Sheet. getCellByPosition ( SC , SR )
Cell. String = "x"
End sub

V makru i ve funkci je dvojí různé volání. Takže to lze jako kód zredukovat

Editoval neutr (27. 3. 2013 18:13:29)


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

#5 29. 3. 2013 17:08:32

rejze
Člen
Registrace: 9. 1. 2013
Příspěvků: 51

Re: Ovládací prvky

Díky. Zkusim to a uvidim. O makrech je tu pekny serial a uz se v tom zacinam orientovat. Zatim jsem je neřešil,protože manželka má v práci MSO a pěkně fousatý.Jenže chci se posunout dál a nakonec ani ty ovládací prvky nejsou kompatibilní,takže chci udělat komplet řešení pro LO,aby byla distribuce napojená i na sklad a tam se makrům stejně nevyhnu. Jestli to bude používat je jiná,ale já mám co řešit. ;-)
Edit:
Tak to funguje. Ještě jsem to upravil,jelikož je třeba nejen označit,ale i odznačit. K tomu jsem ještě ošetřil případ,že je v buňce jakýkoli jiný znak.


Sub AdresFunk
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
  oSheet = oDoc.Sheets( SH)
  s = oSheet.getcolumns().ElementNames( SC) 'vypíše alfabeteicky název sloupce
'----------------------------
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = ThisComponent
Sheet = Doc. Sheets ( SH )
Cell = Sheet. getCellByPosition ( SC , SR )
If Cell. String = "" Then
Cell. String = "*"
Else
If Cell. String = "*" Then
Cell. String = ""
End If
End if
If Cell. String <> "" Then
If Cell. String <> "*" Then
Cell. String =""
End If
End If
End sub

Takže ještě jednou díky.

Editoval rejze (30. 3. 2013 01:15:54)

Offline

Zápatí