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

#1 9. 5. 2023 14:51:11

tomas_br
Člen
Registrace: 6. 5. 2023
Příspěvků: 4

Převedení vzorce / funkce z MC Excel VBA do LibreOffice Calc

Zdravím, potřeboval bych prosím kdo se vyzná a umí programovat v LibreOffice Calc. Bohužel jsem nováček a vím tady prd.
Potřeboval bych ale převést vzorec / funkci z MC Office Excel do LibreOffice Calc. Bohužel jsem zkusil otevřít excel v LibreOffice a nešlo mi to sad. Budu rád za veškerou radu či pomoc !

Přikládám níže:

Function SoucetBarev1(samplecell As Range, BOblast As Range) As Long

    Dim OblastBA As Range
    Dim VyplnBa As Long
    Dim PocetBa As Long
   
   
    VyplnBa = samplecell.Interior.Color
    For Each OblastBA In BOblast
        If OblastBA.Interior.Color = VyplnBa Then
            PocetBa = PocetBa + 1
        End If
    Next OblastBA
   
    SoucetBarev1 = PocetBa
   
End Function


Děkuji za veškerou radu !

Editoval tomas_br (9. 5. 2023 14:53:31)

Offline

#2 10. 5. 2023 16:04:59

kabi
Člen
Registrace: 1. 6. 2017
Příspěvků: 167

Re: Převedení vzorce / funkce z MC Excel VBA do LibreOffice Calc

před tu funkci stačí přidat tento zápis (bez apostrofů) 'Option VBASupport 1' a funkce bude fungovat i v LibreOffice (Calc). V Calcu ji pak zavoláte takto (opět bez apostrofů) : '=SoucetBarev1(A1;A1:A50)', kde v A1 je barva, kterou chcete počítat a A1:A50 je oblast, ve které se má spočítat počet výskytů této barvy.

Offline

#3 10. 5. 2023 16:12:49

kabi
Člen
Registrace: 1. 6. 2017
Příspěvků: 167

Re: Převedení vzorce / funkce z MC Excel VBA do LibreOffice Calc

Pro váš příklad z jiného příspěvku by tedy bylo vhodné si do hlavičky tabulky obarvit buňky odpovídající barvou (pro D1 modře, pro E1 oranžově atd.) a pak např. do buňky D2 zapsat toto =SoucetBarev1(D1;A1:A10)

Offline

#4 11. 5. 2023 10:29:46

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

Re: Převedení vzorce / funkce z MC Excel VBA do LibreOffice Calc

Tohle by šlo dost snadno předělat na příklad pomocí DECLARE na Kód v Našem Basicu.

     LADER u dotazu v prvém případě uvádí své řešení jako funkci. To samozřejmě vyhovuje, ale syntax pomocí DECLARE by byl prakticky shodný s tím ve VBA a snad by šel i přímo použít bez zaklínadla VBASupport 1. Já jsem tady už někdy dávno a opakovaně dával pomůzku na určování barev. Měli byste si ji otestovat, nebo vyhledat :

Function BarvaPozadi 'Vypíše číslo barvy pozadí buňky vlevo
 oCell = ThisComponent.CurrentController.getSelection() 
With oCell.RangeAddress 
SH = .Sheet 
SC = .StartColumn 
SR = .StartRow
End With 
oSheet = ThisComponent.Sheets(SH) 
oCell = oSheet.GetCellbyPosition(SC+i-1, SR)
barva = oCell.CellBackColor
pismo = oCell.CharColor
BarvaPozadi = "Číslo barvy pozadi = " & barva & " Číslo barvy písma = " & pismo
End Function

     Tuto rutinu mám připravenu i pro jiné účely. zejména pro hledání podle cell proprty, tedy podle barvy pozadí, písma (tohle dělá i kód výše), ale mělo by to být také podle velikosti, fontu a typu (Normální, tučné, kurzíva, podtržené nadtržené a další). Mimo toho orámování může být pro každou stranu jiné co do tloušťky, nebo barvy. Označování by mělo být také typizované, aby uživatel nepřemýšlel co, kterým typem označení myslel ap...


     Tuto připravovanou ale nedokončenou šablonu bych zamýšlel jak "výchozí šablonu" takže ovládání maker by si musel každý zvolit sám po načtení, nebo nechat jen hyperlinkové volání (s současné verzi česky a anglicky). Takže odzkouší šablonu, prohlédne si Basic a nechá třeba jen to co používá. Ostatní smaže a uloží s nastavením výchozí. Použije až případě, že to co navolil potřebuje. Není vypadá asi divně, ale jen z tohoto důvodu.
     Rád bych, aby byla nějaká zpětná kontrola od Vás členů komunity OpenOffice.cz. Uvítal bych i návrh na správu šablony. Nemám na to moc času a za necelý rok mi bude 70. Šablonu v této podobě ještě nezveřejněnou dávám k posouzení na odkaze "Jak propagovat OpenOffice | LibreOffice".


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í