[[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