szótár kártya készítése calcban

Táblázatkezelő
Grumike
Hozzászólások: 2
Csatlakozott: 2023. június 1., csütörtök 11:55
Tartózkodási hely: Budapest

szótár kártya készítése calcban

Hozzászólás Szerző: Grumike »

Sziasztok!

va egy elképzelésem amit szeretnék megvalósítani libreoffice calcban:
Van 2 db munkafüzet munkalapom:
Az első neve: "Szavak". Ebben az "A" oszlopban angol szavak, "B" oszlopban a magyar megfelelői vannak (szimpla szótár).
A második neve: "Daily challenge"
A daily challenge munkalap "A1" cellájába egy függvény véletleszerűen kiír egy angol szót a "Szavak" munkalapon található "A" oszlop szavaiból. A "B1" cellába én írom a megoldást.
Ha a Magyar szópár nem egyezik meg a "Szavak" munkafüzetben található szópárral, akkor a "C1" cellába piros szöveggel a "helytelen" szó jelenik meg.
Ha a szópár egyezik a "Szavak" munkafüzetben található szópárral, akkor a "C1" cellába zöld szöveggel a "helyes" szó jelenik meg.

Ehhez valamicskét konyítok (ámátőr szinten), de sajnos többszöri próbálkozásra sem sikerült. Illetve "működik, de nem csinál semmit. Ime:

Kód: Egész kijelölése

=INDEX('Szavak’!A:A; VÉLETLEN.KÖZÖTT(1, DARAB2(Szavak!A:A)), 1)
Hol lehet a hiba?

Illetve még próbálkoztam libreoffice basic-el, de ahhoz végkép süket vagyok. Interneten nézegettem lehetőségeket, és összetákoltam valamit, de itt se fut le semmi. Ime:

Kód: Egész kijelölése

Sub DailyChallenge()
    Dim szavakSheet As Object
    Dim dailyChallengeSheet As Object
    Dim lastRow As Long
    Dim randomIndex As Integer
    Dim randomWord As String
    
    ' Az "Szavak" munkalap hivatkozása
    szavakSheet = ThisComponent.Sheets.getByName("Szavak")
    
    ' A "Daily Challenge" munkalap hivatkozása
    dailyChallengeSheet = ThisComponent.Sheets.getByName("Daily Challenge")
    
    ' Az "Szavak" munkalap utolsó nem üres sorának meghatározása az "A" oszlopban
    lastRow = szavakSheet.getCellRangeByName("A1").getDataArray().getLength(0)
    
    ' Ellenőrizze, hogy van-e legalább egy szó az "Szavak" munkalapon
    If lastRow > 0 Then
        ' Véletlenszerű index generálása
        Randomize
        randomIndex = Int((lastRow - 1 + 1) * Rnd + 1)
        
        ' Véletlenszerűen kiválasztott angol szó meghatározása
        randomWord = szavakSheet.getCellByPosition(0, randomIndex).getString()
        
        ' Angol szó megjelenítése a "Daily Challenge" munkalap "A1" cellájában
        dailyChallengeSheet.getCellByPosition(0, 0).setString(randomWord)
    End If
End Sub
Esetleg valakinek ötlete, hogy mit kéne módosítanom, hogy meg tudjam valósítani az elképzelésemet?

Előre is köszi a válaszokat.
LibreOffice 7.4.4.2 Mac OS X 10.13.6;
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: szótár kártya készítése calcban

Hozzászólás Szerző: Zizi64 »

Részinformációk helyett a inkább komplett fájlt küld be a beágyazott makrókkal együtt. (ha túl nagy a szótár, töröld egy részét. 128 KiB a limit itt a fórumon.)
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Grumike
Hozzászólások: 2
Csatlakozott: 2023. június 1., csütörtök 11:55
Tartózkodási hely: Budapest

Re: szótár kártya készítése calcban

Hozzászólás Szerző: Grumike »

Íme:
szótár_be.ods
(9.31 KiB) Letöltve 51 alkalommal.
LibreOffice 7.4.4.2 Mac OS X 10.13.6;
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: szótár kártya készítése calcban

Hozzászólás Szerző: Zizi64 »

Kód: Egész kijelölése

=INDEX('Szavak’!A:A; VÉLETLEN.KÖZÖTT(1, DARAB2(Szavak!A:A)), 1)
Nem írtál semmilyen képletet a második Sheet-re...

Első meglátások:
  • A felkiáltójel az Excelben szokásos elválasztójel a képletekben. A LibreOffice pontot használ. Ha csak az ide feltöltött fájlod ODF formátumú, akkor első tippem: az éles fájlodhoz is ODF fájlformátumot használj!. Nem létezik 100%-os kompatibilitás a különböző fájlformátumok között. (Soha nem is volt, soha nem is lesz!)
  • A LibreOffice-ban nem célszerű teljes oszlopra hivatkozni (A:A), mert a több, mint egymillió lehetséges sor kezelése a keresőfüggvényekkel nagyon lelassíthatja a folyamatot. Használj nevezett tartományokat:
    Akkor nem kell a képletbe írnod a Sheet nevét se, és csak ott keres, ahol találhat is.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: szótár kártya készítése calcban

Hozzászólás Szerző: Zizi64 »

A megoldási javaslaton túl némi finomítás is van a mellékelt fájlban.
  • Mindig használd az "Option Explicit" kapcsolót. Az IDE olyankor szólni tud, ha elírtál egy változónevet, vagy olyat akarsz használni, amit még nem deklaráltál.
  • Célszerű kikapcsolni a kisbetű/nagybetű megkülönböztetést magában a Calc-ban, vagy a kiértékelés során a makróban MINDKÉT adatot nagy-, vagy kisbetűsre váltani).
  • Ahogy már írtam, célszerű használni a nevezett cellákat és tartományokat. A neveket mind a cellaképletekben, mind a feltételes formázásban használhatod.
  • Telepíts egy objektumvizsgáló kiterjesztést. (XrayTool vagy MRI ) Nagyon megkönnyíti a programozást, az iszonyatosan nagy méretű, sok elemű API használatát. Én a kódban - kiREMelve (' xray ...) az XrayToolt használtam, hogy megtudjam, hogy az adott programozási objektum milyen tulajdonságokkal és metódusokkal rendelkezik. (így tudtam meg, hogy a nevezett cellatartománynak hogy érhetem el a sorainak a számát.
  • A nevezett tartományba anélkül tudsz új sorokat szúrni, hogy kézzel módosítanod kéne a tartományhatárokat. De mindig csak pontosan annyi sor legyen a nevezett tartományban, mint amennyi adatod van.
szótár_be_Zizi64.ods
(14.79 KiB) Letöltve 52 alkalommal.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: szótár kártya készítése calcban

Hozzászólás Szerző: Zizi64 »

Nos? Sikerült valamennyit segíteni?
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Válasz küldése