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

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


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

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)


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