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

#1 Re: Calc » Pozice záznamu v comboboxu » 5. 6. 2022 08:49:18

Chtěl jsem právě zachovat název, protože občas jsou položky, které mají stejný název, protože se jedná o tu samou věc, jen je od jiného dodavatele
např."Svorka propojovací 221-413 s páčkou 3x 0,2-4mm2"


Heslo k listům je v kódu např. na konci "Vydej/DialogV_Sdata

#2 Calc » Pozice záznamu v comboboxu » 4. 6. 2022 10:58:07

Bezda86
Odpovědí: 3

Zdravím vás, po delší době jsem narazil na problém ve svém makro projektu, s kterým bych potřeboval poradit.

Potřeboval bych zjistit pozici záznamu v comboboxu na který jsem klikl.


Potřebuji doplnit údaj do textboxu v dialogu na základě vybraného záznamu v comboboxu.
To mi funguje, jen mi jde o to, že některé záznamy v comboboxu jsou stejné (potřebuji aby byli stejné) a tak nelze podle stringu výběru comboboxu hledat v sešitu, protože pak najde vždy první záznam a já v tu chvíli nevím jestli chci první, druhý nebo třetí.


https://uloz.to/file/RqJdgGISRswv/sezna … SlIwx1BD== Ukázkový soubor


Např.
Požadavek: Na listu "Výdej materiálu" spustit makro přes tlačítko "Zapsat výdej", tam v comboboxu "Název materiálu" vybrat záznam "Pinové pouzdro" a do textového pole "Objednací kód" zapsat hodnotu.
(Vstupní hodnoty pro "Název materiálu" a "Objednací kód" jsou na listu "Seznam materiálu")
Toto je řízeno z makra "Central/AutoSelectKodNazev" s dialogem "dlg_Vydej" jen to neumí při shodném záznamu rozlišit ,který z nich to je.


Díky za každou radu

#3 Calc » Zrušení filtru makrem » 18. 3. 2022 14:49:36

Bezda86
Odpovědí: 0

Zdravím vás,
potřeboval bych poradit, když někdo zapomene zapnutý nějaký filtr, tak ho před spuštěním různých maker, makrem zrušit.

Co jsem četl po internetu, tak se toto řeší i na anglických fórech např: zde, ale všude bez vyřešení problému.

Kódy jako:

Sub RemoveSheetFilter()
  Dim oSheet, list          ' Sheet to filter.
  Dim oFilterDesc     ' Filter descriptor.
  
  oSheet = ThisComponent.getSheets()
  list = oSheet.getByName("Seznam materiálu")
  oFilterDesc = list.createFilterDescriptor(True)
  oFilterDesc.UseRegularExpressions = True
  list.filter(oFilterDesc)
End Sub

nebo

Sub DeleteFiltr
	Dim args(0) as new com.sun.star.beans.PropertyValue
	Dim oDispatcher, oFrame as object
	oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	oFrame   = ThisComponent.CurrentController.Frame

	args(0).Name = "ToPoint"
    args(0).Value = "$B$9"  'any cell of database range
    oDispatcher.executeDispatch(oFrame, ".uno:GoToCell", "", 0, args())
    oDispatcher.executeDispatch(oFrame, ".uno:DataFilterRemoveFilter", "", 0, Array())
End Sub

Pouze odkryjí skryté řádky, ale stále je aktivní šipečka filtru a podle filtru pro vedlejší sloupec, kde je omezená nabídka podle filtru z předchozího sloupce je vidět, že filtr pořád není zrušený.

Má v dnešní době někdo návrhy jak toto vyřešit.
Díky za rady

#4 Re: Calc » Vložení dat do seznamu v dialogu » 4. 2. 2022 13:34:09

Dobrý den,
chtěl bych se zeptat zda se dá něják natvrdo v dialogu uložit obrázek. Např. pro chybové hlášení mi nedostačovali msgboxy a tak jsem si vytvořil vlastní dialogy chyb (oznámení) a do nich chtěl vložit ikonku podle typu hlášení. Ikona se vloží, v návrhu je vidět, v náhledu je také vidět, ale při spuštění dialogu už vidět není a po zavření a otevření souboru už není vidět ani v návrhu.

Konkrétně se jedná o tyto dialogy dlg_EditDeleteRow, dlg_PrazdneBunkyNZ, dlg_PrazdneBunkyP a dlg_PrazdneBunkyV
v horní části uprostřed je pole obrázku, ale prázdné.

Ikona otazníku    Ikona vykřičníku   Ukázkový soubor

#5 Re: Calc » Vložení dat do seznamu v dialogu » 23. 1. 2022 12:57:03

Dobrý den,
po dlouhé době jsem zpět s tím, že jsem celý soubor, který byl slepeninou excelu a calcu předělal od začátku jako calc soubor s novými požadavky a tím i novými problémy.


Pro upřesnění funkce souboru. U nás ve firmě zabývající se automatizací (vývoj a montáž automatizovaných a robotických výrobních linek) mají v kanceláři Helios a MS Office, jenže všude se šetří a licenci nám na dílnu na Helios a Office nikdo nekoupí. Obchodní oddělení na nás má požadavek, aby jsme jim dávali vědět jaký materiál v jakém množství spotřebujeme za daný měsíc na jaký projekt, samozřejmě bez přípravy jakéhokoliv prostředku. Proto jsem se rozhodl vytvořit si tuto evidenci, která nám bude sloužit jako ukazatel, kolik čeho máme (info pro nás) a na konci měsíce pošleme soubor na obchodní oddělení, kde budou mít v listu výdej materiálu evidenci toho co je zajímá. Typy umístění jsou jen ukázka toho jaký je ve všem chaos, ale nikdo nechce nic měnit, protože by to pro ně znamenalo více práce byť jen dočasně, než by se dalo vše do pořádku. V neposlední řadě vedení nechce vynakládat pro ně zbytečné náklady na zlepšení přehlednosti nákupem více skříní nebo regálů s binovými pozicemi, když to podle nich zatím takhle funguje.
Stručně a jednoduše: když se zaměstnavatel nepostará o to co chce po zaměstnancích, musí se zaměstnanec postarat sám aspoň v omezené míře.


Doteď jsme používali dva soubory jeden pro manuální evidenci množství a druhý pro manuální zápis toho výdeje. Pro mnohé to bylo složité a často na některé věci zapomněly a tak toho moc nesedělo.


V současnosti řeším 3 problémy, které jsou podrobně popsány v souboru na listu "Nefunkční věci"
Jen ve stručnosti:
1) Jedná se o řazení dat podle určitého sloupce, zkoušel jsem několik verzí zde z fóra a nevím proč žádný nefunguje, co dělám špatně.
2) Zápis datumu přes kalendář a ručně se pokaždé zapíše jinak potřebuji sjednotit výstup
3) pro možnost editace výdeje a příjmu položek potřebuji naplnění seznamů jako při klasickém výdeji či příjmu jen navíc předvyplnit pole hodnotou z buněk řádku, který je editován.


Děkuji za jakoukoliv pomoc.


Ukázkový soubor

#6 Re: Calc » Vložení dat do seznamu v dialogu » 3. 1. 2022 19:52:13

Ukázkový soubor

Pánové děkuji vám za rady, použil jsem a upravil verzi od kamlana, hlavně protože pracuji s daty v objemu stovek.
Sice vše funguje, ale po otevření roletky se seznam zobrazuje na konci pole.
Je nějaký jednoduchý fígl, jak toto zobrazení přesunout na začátek dat?

Předem moc děkuji za vaší bezvadnou práci a ochotu pomoci nám začátečníkům.

#7 Calc » Vložení dat do seznamu v dialogu » 29. 12. 2021 14:58:15

Bezda86
Odpovědí: 12

Prosím o radu zda jde a jak vložit data z buněk do rozevíracího seznamu v dialogovém okně
něco jako toto:

Sub Main
dim vstupni_pole, dlg as object
doc = thisComponent
list = doc.sheets(0)

DialogLibraries.LoadLibrary("Standard")
dlg=createUnoDialog(DialogLibraries.Standard.Dialog1)
vstupni_pole = list.getCellRangeByName("A2:A4")

dlg.getControl("d_seznam")=vstupni_pole

if dlg.execute() = 1 then

dlg.dispose()
endif
End Sub

Ve formulářovém ovládacím prvku je k tomu záložka data, ta ovšem v prvku pro dialog není.

Děkuji za každou radu

#8 Re: Calc » Chyba v typu proměnné v makru - VYŘEŠENO » 18. 12. 2021 20:15:34

To kamlan:
Uznávám, že kombinace kódu VBA z Excelu a z OO Calcu není ideální, ale zrovna v těchto řádkách mi to dává přesně ty hodnoty co potřebuji.
Řádek který zmiňuješ po přidání .string sice funguje, ale vzhledem k tomu že z dané buňky čtu číslo, ke kterému chci přičíst číslo a zapsat jejich součet zpět do této buňky, .string mi nepomáhá.
Když místo .string zadám .integer, tak zase vyskočí chyba zmiňující právě .integer

#9 Calc » Chyba v typu proměnné v makru - VYŘEŠENO » 18. 12. 2021 14:51:07

Bezda86
Odpovědí: 3

Vyskakujemi hláška BASIC - Chyba při běhu '380' Nesprávná hodnota vlastnosti se zastavením v řádku:

NoveMnozstvi_data(0,0) = AktualniMnozstvi + PocetPrijem_data(0,0)

Může mi někdo říci jak upravit kód, aby byl funkční, zkoušel jsem různé kombinace proměnných a buď se mi nevepsal "počet" do buňky na listu příjmu ani nedošlo k přepočtu množství nebo nastala výše zmíněná chyba.

Option VBASupport 1
Private Sub ZapisPrijem_Click()
doc = thisComponent
ListPrijemMaterialu = doc.sheets(2)
ListSeznamMaterialu = doc.sheets(0)

'Zjištění posledního vyplněného řádku a volného řádku na listu "Příjem materiálu"
Dim PosledniRadekPrijem As Long, VolnyRadekPrijem As Integer

If WorksheetFunction.CountA(Cells) > 0 Then     
    PosledniRadekPrijem = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
     VolnyRadekPrijem = PosledniRadekPrijem + 1
End If

'Zápis počtu příjmu z příjmového formuláře
Dim PocetPrijem_range as object, PocetPrijem_data(0,0) as variant
PocetPrijem = ListPrijemMaterialu.getCellRangeByName("C3").string      
PocetPrijem_data(0,0) = PocetPrijem

BunkaPocetPrijem = "C" &VolnyRadekPrijem

PocetPrijem_range = ListPrijemMaterialu.getCellRangebyName(BunkaPocetPrijem)
PocetPrijem_range.setDataArray(PocetPrijem_data)


'Hledání řádku přijímaného materiálu na listu "Seznam materiálu"
Hledej = ListSeznamMaterialu.createSearchDescriptor()
Hledej.SearchString = NazevPrijem
Radek = ListSeznamMaterialu.findFirst(Hledej)
CisloRadku = Radek.RangeAddress.EndRow + 1
BunkaPocetPrepis = "F" &CisloRadku


'Načtení hodnoty počtu z listu "Seznam materiálu", navýšení o příjem a zapsání navýšené hodnoty
Dim NoveMnozstvi_range as object, NoveMnozstvi_data(0,0) as variant, AktualniMnozstvi as variant
AktualniMnozstvi = ListSeznamMaterialu.getCellRangeByName(BunkaPocetPrepis)
NoveMnozstvi_data(0,0) = AktualniMnozstvi + PocetPrijem_data(0,0)
NoveMnozstvi_range = ListSeznamMaterialu.getCellRangebyName(BunkaPocetPrepis)
NoveMnozstvi_range.setDataArray(NoveMnozstvi_data)

End Sub

Díky za jakékoliv rady

Zápatí

Používáme FluxBB