[[oktatas:programozás:basic|< Basic]] ====== MSO Basic ====== * **Szerző:** Sallai András * Copyright (c) 2011, Sallai András * Szerkesztve: 2011, 2015, 2018 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Bevezetés ===== Az alábbi leírás egy rövid bevezetést ad az Excel makrózáshoz. A leírás fejlesztés alatt van, ezért nagyon rövid, de kezdéshez jó támpont lehet. ===== Mentés ===== Mentéskor válasszuk a következőt: * Makróbarát word-dokumentum ===== Fejlesztői eszközök ===== * FÁJL menü -> Beállítások -> Menüszalag testreszabása A megjelenő ablakban jobboldalon "Menüszalag testreszabása". Van egy sor jelölőnégyzet. Keressük meg a "Fejlesztőeszközök" feliratú jelölőnégyzetet: [ ] Fejlesztőeszközök Korábbi Excelben: Első lépésként be kell kapcsolni a fejlesztőelemek fület a menüszalagon. "Office gomb" -> "Az Excel beállításai" gomb -> "Népszerű elemek" lap "Fejlesztőeszközök lap megjelenítése a szalgon" jelölőnégyzet Ekkor megjelenik egy "Fejlesztőeszközök" feliratú fül, ahol már rögzíthetünk saját makrókat, írhatunk Basic kódokat. ===== Megjegyzés ===== 'megjegyzés szövege ===== Eljráás ===== Sub Makró1() ' Utasítások End Sub ===== Változók használata ===== A változókat nem szükséges deklarálni. Egyszerűen elkezdjük használni. A következő példában az "a" változóba egy 3-as értéket teszünk. a = 3 A következő utasítás az aktív cella értékét helyezi az "a" változóba: a = ActiveCell.Value Hogy a kód teljesebb legyen, a példa kedvéért a "C3"-as cellát aktívvá tesszük: Range("C3").Select a = ActiveCell.Value Egy cellába egy érték elhelyezése: [c5].Value = 25 A példában a "c5"-ös cellába helyezzük a 25-ös számot. Evaluate("c5").Value = 25 ===== Matematikai függvények ===== | Abs(x) | abszolút érték | | Sin(x) | szinusz | | Cos(x) | koszinusz | | Tan(x) | tangens | | Sqr(x) | gyökvonás | | Int(x) | egész rész | ===== Véletlenszám generálása ===== Véletlenszám generálása 0-tól -- 2-ig. szam = Int(3 * Rnd()) ===== Operátorok ===== | ^ | hatványozás | ===== Bevitel párbeszédablakból ===== a = InputBox ("vmi") ===== Szelekció ===== If a > 3 Then Range("C3").Select ActiveCell.Value = "Nagyobb" End If ===== Iteráció ===== ==== For ==== For i = 1 to 10 'Utasítások Next i ===== A With kulcsszó ===== Worksheets("Sheet1").Activate With ActiveCell.Font .Bold = True .Italic = True End With ===== Sztringkezelés ===== Sztring összefűzése MsgBox (szam1 & " " & szam2) ===== Függvények ===== ==== Gyökvonás ==== MsgBox (Sqr(9)) ==== Szinusz ==== b = [SIN(45)] MsgBox b ==== Összeg ==== A c2:c5 cellatartomány összegzése: b = [Sum(c2:c5)] ==== Átlag ==== b = [Average(c2:c5)] ===== VB függvények ===== ==== LBound ==== Egy tömb első elemének az értéke LBound(tömb_neve, [dimenzió]) Dim A(1 To 100, 0 To 3, -3 To 4) LBound(A, 1) 'Eredénye: 1 LBound(A, 2) 'Eredménye: 0 LBound(A, 3) 'Eredménye: -3 Dim Legkisebb Dim tomb1(1 To 10, 5 To 15, 10 To 20) ' Declare array variables. Dim tomb(10) Legkisebb = Lbound(tomb1, 1) ' Eredmény: 1. Legkisebb = Lbound(tomb1, 3) ' Eredmény: 10. Legkisebb = Lbound(tomb2) ' Eredmény: 0 vagy 1, az kezdő index beállításától függően ==== UBound ==== Egy tömb utolsó elemének az értéke UBound(tömb_neve, [dimenzió]) ===== Üzenetablak ===== MsgBox b MsgBox("Üzenet ide") ===== Listák ===== A kettes számú lista beillesztése A11:A17 cellákba: listArray = Application.GetCustomListContents(2) For i = LBound(listArray, 1) To UBound(listArray, 1) Worksheets("Munka1").Cells(i + 10, 1).Value = listArray(i) Next i ===== Példa1 ===== Sub Makró3() szam1 = 35 szam2 = 22 eredmeny = szam1 * szam2 cella = "A3" Range(cella).Select ActiveCell.Value = eredmeny End Sub ===== Példa2 ===== Sub ÁtlagMakró() ' ' ÁtlagMakró Makró ' ' Billentyűparancs: Ctrl+r ' [a1].Value = 35 [a2].Value = 70 [a3].Value = 25 [a4].Value = 82 [a5].Value = 27 [a7].Value = "Átlag:" atlag = [average(A1:A5)] [b7].Value = atlag End Sub ===== Űrlap ===== Private Sub CommandButton1_Click() a = TextBox1.Text 'MsgBox (a * 2) d = a * 2 TextBox1.Text = d End Sub ===== Űrlap elérése makróból ===== ThisDocument.TextBox1.Text = "egy" vagy ActiveDocument.TextBox1.Text = "kettő" A ThisDocument objektum nem használható a Normal.dotm-ból, csak az aktuális dokumentumba mentett makrókból. ===== Ablakok létrehozása ===== Készíthetünk saját ablakokat is, amelyeket bármely makróból meghívhatunk. A saját ablakra UserForm néven hivatkozhatunk. Két módon készíthetünk UserFormot: * Eszköztár -> második ikon * Insert menü -> UserForm A UserForm mellett megnyílik egy eszköztár, amelyről komponensek pakolhatók fel. Az eszköztár ki és bekapcsolható a főeszköztár jobb szélső ikonjával. A makróból meghívhatjuk ezeket az ablakokat a következő módon. UserForm.Show ===== Irodalom ===== * http://support.microsoft.com/kb/291073 * http://www.techotopia.com/index.php/Visual_Basic_Essentials * http://www.fontstuff.com/vba/ * http://msdn.microsoft.com/en-us/library/office/ee861527(v=office.15).aspx