Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:basic:basic_libreoffice:calc

< Basic LibreOffice

Basic LibrOffice Calc

Nyomógombhoz esemény rendelése

Lépések:

  • Elkészítjük a végrehajtandó makrót
  • A munkafüzethez hozzáadjuk a nyomógombot
  • A nyomógombhoz rendeljük a makrót
  • Használatba vétel

Makró elkészítése

Eszközök -> Makrók -> Makrók rögzítése ...

A LibreOffice 3.3.2 verzióját használva ez utóbbi menüpont nekem nem aktív. Makrót persze így is tudok készíteni, csak felvenni nem.

Később így tették ide:

Eszközök -> Beállítások -> Általános -> Kísérleti (instalbil) funkciók engedélyezése

A 3.6.x verziókban már külön jelölőnégyzetet kapott:

Eszközök -> Beállítások -> Általános -> Makrórögzítés engedélyezése (korlátozott)

Gomb elhelyezése

OpenOffice.org/LibreOffice:

Nézet -> Eszköztárak -> Űrlap-vezérlőelemek

Az előugró kúszóablakon a negyedik ikon a „Vezérlőelemek” Ezt legördítve tudunk elhelyezni gombokat. A tervező módot ki és bekapcsolni.

A makró és a nyomógomb összerendelése

Az elkészült nyomógombhoz eseményt kell rendelnünk. Ki kell választanunk a nyomógombnak mely eseményéhez rendeljük a makrót. Célszerűen lehet ez az „Egérgomb lenyomása”.

Szerkesztő módban a nyomógomb felett kattintsunk jobb egér gombbal, majd az előugró menüből válaszuk a „Vezérlőelem…” menüpontot. Az előugró ablakban az „Események” fülre kattintunk. Ott kikeressük a fenti eseményt (Egérgomb lenyomása), a mellette lévő gombra kattintunk, amelyen három pont van.

Egy művelet hozzárendelése nevű ablak fog megjelenni. Ebben a „Makró …” gombra kattintva megkeressük az elkészített makrót, majd mindent okézok.

Használatba vétel

Ha be van kapcsolva az űrlap-vezérlőelemek panel, találunk rajta egy Tervező mód be/ki gombot. Kapcsoljuk ki a tervező módot és használhatjuk a gombot.

Munkafüzet kezelése Basic-ben

A Basic programokat a következő módon írhatunk:

Alt + F11

Vagy:

Eszközök -> Makrók -> Makrók rendezése -> OpenOffice.org Basic...

Az előugró ablakban kiválasztjuk melyik makrót szeretnék szerkeszteni, esetleg újat kezdünk. Egy új makró elkezdéséhez, az előugró ablakban a „Main” makrónevét írjuk át saját új makrónévre. Ekkor a „Törlés” gomb „Új” feliratra vált.

A makrók Basic nyelven íródnak. A felvétel mellett mi magunk is írhatunk ilyen programokat. Ehhez ismernünk kell egy dokumentum szerkezetét Basic nyelven.

Dokumentum felépítése

Hozzáférés egy munkafüzet, első munkalapjához:

Dim Dok As Object   
Dim Fuzet As Object

Dok = ThisComponent
Fuzet = Dok.Sheets(0)

A példában felveszünk egy Dok és egy Fuzet nevű változót, amelyek objektum típusúak lesznek. Az Dok magát a Dokumentumot fogja jelképezni, a Fuzet pedig a munkafüzetet. A harmadik sorban meghatározzuk, hogy a Dok változó milyen objektumra mutasson: ThisComponent, amely az aktuális dokumentumot jelenti. Az utolsó sorban a megadjuk, hogy a Fuzet változó a dokumentum melyik munkafüzetére mutasson. A Sheets(0) az első munkafüzetet jelenti. Látható, hogy a munkalapok számozása 0 értékkel kezdődik.

A munkalapokra azonban hivatkozhatunk nevével is:

Dim Dok As Object   
Dim Fuzet As Object

Dok = ThisComponent
Fuzet = Dok.Sheets.getByName("Munkalap1")

Dokumentum cellájára hivatkozás

Cella = Fuzet.getCellByPosition(0,2)

Esetleg angolosan:

Cell = Sheet.getCellByPosition(0,2)

A munkafüzet első oszlopának száma 0, az első sorának száma 0. Tehát az A1 cellára így hivatkozunk:

Cell = Sheet.getCellByPosition(0,0)

A cella egy értékének beállítása

Cella.Value = 1000

vagy angolosan:

Cell.Value = 1000

Egy lehetséges makró

REM  *****  BASIC  *****
Sub Main
  Doc = ThisComponent
  Sheet = Doc.Sheets.getByName("Munkalap1")

  Cell = Sheet.getCellByPosition(0,2)
  Cell.Value = 1000
End Sub

Átlag számítás adott tartományban

Sub Main
  Dok = ThisComponent
  Munkalap = Dok.Sheets(0)
  CellaTartomany = Munkalap.getCellRangeByName("B2:D5")
  MsgBox CellaTartomany.computeFunction(com.sun.star.sheet.GeneralFunction.AVERAGE)
End Sub

Egy cella lekérdezése

Sub Main
	dim sheet as object
	dim cell as object
	dim doc as object
	doc = thiscomponent
 	sheet = doc.sheets.getbyname("Munkalap1")
	cell = sheet.getcellbyposition(0,0)
	MsgBox(cell.string, 120, "Címsor")
End Sub

Összegzés

Sub Main
 
	Sheet = ThisComponent.Sheets(0)
 
	tar = Sheet.getCellRangeByName("A1:A5")
	osszeg = 0
	for i = 0 to 4 
		a = tar.getCellByPosition(0,i).value
		osszeg = osszeg + a
	next i
	er = Sheet.getCellRangeByName("A6")
	er.Value = osszeg
End Sub

Párbeszédablak

MsgBox(„Kiírandó szöveg”, 16, „Címsor szövege”)

Szám Ikon Gombok
0 Ok
1 Ok, Mégse
2 Megszakítás, Ismét, Mellőz
3 Igen, Nem, Mégse
4 Igen, Nem
5 Ismét, Mégse
16 X Ok
17 X Ok, Mégse
18 X Megszakítás, Ismét, Mellőzés
19 X Igen, Nem, Mégse
20 X Igen, Nem
21 X Ismét, Mégse
32 ? Ok
33 ? Ok, Mégse
34 ? Megszakítás, Ismét, Mellőzés
35 ? Igen, Nem, Mégse
36 ? Igen, Nem
37 ? Ismét, Mégse
48 ! OK
49 ! Ok, Mégse
50 ! Megszakítás, Ismét, Mellőzés
50 ! Igen, Nem, Mégse
51 ! Igen, Nem
52 ! Ismét, Mégse
64 izzó Ok

Egyszerű párbeszédablak

Sub Main
print "Valami"
End Sub

Bevitel

Sub Bevitel
	ertek = InputBox("Valai")
	MsgBox(ertek)
End Sub

Iteráció

Sub Main
	For i = 1 to 10
		print i
	Next i	
End Sub

Matematikai függvények

Gyök:

print sqr(9)

A hatvány operátorral oldjuk meg:

a = 3^2

Szám egész része:

print int(3.7) ' Eredmény: 3

Véletlenszám

Szám 0 és 2 között:

print int(rnd * 3)

Dobókocka:

vel = int(rnd()* 6) + 1

1 és 6 közötti véletlen számot generál

Cellába írás

Érték írása egy cellába:

thisComponent.Sheets(0).getCellRangeByName("c6").Value = 47

Szöveg írása egy cellába:

thisComponent.Sheets(0).getCellRangeByName("c7").String = "alma"

Képlet írása egy cellába:

thisComponent.Sheets(0).getCellRangeByName("c8").Formula = "=SUM(A2:A5)"

Pozíció megadással:

Sub Main
    Sheet = thisComponent.Sheets(0)
    Cell = Sheet.getCellByPosition(0, 0) 'Az A1-es cella
    Cell.Value = 85
End Sub

Cella koordináta nevének megadásával:

Sub Main
    Sheet = thisComponent.Sheets(0)
    Cell = Sheet.getCellRangeByName("C5")
    Cell.Value = 70
End Sub

A GeneralFunction felsorolt típus értékei

com.sun.star.sheet.GeneralFunction.SUM
  • NONE
  • AUTO
  • SUM
  • COUNT
  • AVERAGE
  • MAX
  • MIN
  • PRODUCT – Minden számréték szorzata
  • COUNTNUMS
  • STDEV
  • STDEVP
  • VAR
  • VARP

Példa1

Sub OsszeadoMakro

	Munkafuzet = thisComponent.Sheets(0)
	
	Cella = Munkafuzet.getCellRangeByName("a1")
	Cella.Value = 3
	Cella = Munkafuzet.getCellRangeByName("a2")
	Cella.Value = 2
	Cella = Munkafuzet.getCellRangeByName("a3")
	Cella.Value = 9
	Cella = Munkafuzet.getCellRangeByName("a4")
	Cella.Value = 4
	Cella = Munkafuzet.getCellRangeByName("a5")
	Cella.Value = 7
	Cella = Munkafuzet.getCellRangeByName("a6")
	Cella.String = "Összeg:"

	CellaTartomany = Munkafuzet.getCellRangeByName("a1:a5")
	eredmeny = CellaTartomany.computeFunction(com.sun.star.sheet.GeneralFunction.SUM)

	Cella = Munkafuzet.getCellRangeByName("b6")
	Cella.Value = eredmeny
End Sub

Példa2

Cella = thisComponent.Sheets(0).getCellRangeByName("A1")	
Cella.String = "Szöveg"

Vagy szám esetén:

Cella.Value = 45

Fájlkezelés

Dim contentfile as String
Open "c:\uzi.txt" for input as #1

Input #1, contentfile
ThisComponent.Sheets.getByName("Munkalap1").getCellByPosition(0, 0).String = contentfile

Input #1, contentfile
ThisComponent.Sheets.getByName("Munkalap1").getCellByPosition(0, 1).String = contentfile

Close #1

Egyéb könyvtárak betöltése

BasicLibraries.LoadLibrary("Tools")
DialogLibraries.LoadLibrary( "Standard" )

Külső linkek

Vegyes LibreOffice Basic

Magyar nyelvű anyag

Angol nyelvű anyag

Függelék

Írunk egy cellába

REM  *****  BASIC  *****
 
Sub Main
 
Dok = ThisComponent
Fuzet = Dok.Sheets.getByName("Munkalap1")
Cell = Fuzet.getCellByPosition(0,2)
Cell.Value = 120
 
End Sub
oktatas/programozas/basic/basic_libreoffice/calc.txt · Utolsó módosítás: 2023/08/24 20:43 szerkesztette: admin