3. Lecke – Worksheets, Range, Cells, Select, Value

3. Lecke

Mielőtt belekezdünk a mai anyagba, először is pár alapfogalmat definiáljunk és nézzük meg azok angol megfelelőjét, hogy könnyebben megértsük a dolgokat később:

MunkafüzetWorkbook – Maga az Excel fájl, ami meg van nyitva.
MunkalapWorksheet – Ami egy munkafüzet alsó sávjában a munkalapokat jelöli. (Munka1, Munka2, Munka3)
CellaCell – Egy cellát jelöl a munkalapon belül.

Ennek a három egységnek megvan a maga hierarchiája: Munkafüzet > Munkalap > Cella

Legelőször a cella szintjére fogunk lemenni, de a mai anyag végén megnézzük a munkalapot is.

Tegnap megtanultunk gombot létrehozni, így ezt most használjuk is!
1. Nyissunk egy új munkafüzetet, és a Fejlesztőeszközök menüsorból szúrjunk be egy gombot!

Gomb beszúrása Excel makró

2. A felugró Makró-hozzárendelés ablakban automatikusan felajánl egy nevet az új makrónknak: Gomb1_Click.

3. Kattintsunk az Újat gombra, ekkor elfogadja ezt a nevet és megnyitja a Visual Basic felületet, ahol már írhatjuk is a kódunkat.

Első körben megtanuljuk, hogy hogyan tudunk a cellákkal dolgozni. Ahhoz, hogy egy cellára hivatkozunk több lehetőségünk is van, itt most a két leggyakrabban használt módszert fogjuk tárgyalni: a Range-t és a Cells-t.

I. „Range” alkalmazása

Tegyük fel, hogy…

1. Szeretnénk kijelölni a B5 cellát.

A kijelölés leprogramozásakor a kódban először is megadjuk, hogy mit szeretnénk kijelölni, azaz hivatkozunk a cellára. Jelen esetben ennek a legegyszerűbb módja a Range(„B5”). A Range után zárójelben és idézőjelben a cellánk neve fog hivatkozni.

Ha azt egy ponttal „.” összekötjük a Select paranccsal, akkor a program futtatáskor ki fogja jelölni az adott cellát, mintha csak a cellára kattintottunk volna egyet. Tehát jelen esetben így néz ki a kódunk:

Sub Gomb1_Click()
   Range("B5").Select
End Sub

Ha ezt beírtuk, majd visszamegyünk a táblázatunkba, és megnyomjuk a gombunkat, akkor minden esetben a B5-ös cellát fogja kijelölni nekünk a program.

2. Szeretnénk kijelölni a B5:D6 tartományban az összes cellát.

Minden esetben, amikor több cellára hivatkozunk, akkor a Range-t kell használnunk. Ebben van lehetőség kifejezni több cellás tartományokat.

Sub Gomb1_Click()
   Range("B5:D6").Select
End Sub

Range tartomány kijelölés VBA-ban

Ha ez világos, akkor lépjünk is tovább.

3. Szeretnénk a B4-es cella értékét megadni. Pl. legyen 120.
A .Select után ismerjük meg a .Value kifejezést. Ez fog segíteni, hogy beleírjunk egy cellába, vagy kiolvassuk annak a tartalmát. A felépítés itt is hasonló a Select-hez, annyi különbséggel, hogy utána egy egyenlőségjellel határozzuk meg a kívánt értéket:

Sub Gomb1_Click()
   Range("B4").Value = 120
End Sub

Ha most megnyomjuk a gombunkat, akkor a B4 cellában 120 lesz az érték.

4. A B4 cellába szöveget szeretnénk írni.
Ha nem számot, hanem bármilyen szöveget akarunk kiírni egy cellába, akkor ügyelni kell rá, hogy idézőjelbe tegyük a kívánt szöveget.

Sub Gomb1_Click()
   Range("B4").Value = "Gipsz Jakab"
End Sub

5. Ha pedig azt szeretnénk, hogy az első leckében tanultakkal, az MsgBox segítségével kiírjuk a B4 cella értékét (győződjünk meg róla, hogy van értéke, és nem üres a cella), akkor:

Sub Gomb1_Click()
   MsgBox Range("B4").Value
End Sub

II. Cells alkalmazása

Most, hogy a Range metódust már profin alkalmazzuk, nehezítsünk a dolgon. Amit eddig tudunk, hogy a Range-be be kell írni konkrétan a cellák nevét. Beírom, hogy B4, és akkor a B4 cellával történik valami.

Viszont lesznek olyan esetek később, amikor a járható út az lesz, hogy számmal kell megadnunk a sort és az oszlopot, mivel úgy fogjuk kiszámolni, hogy éppen melyik cella kell nekünk. Azaz a B4 esetében: 4. Sor 2. Oszlop.

Ekkor nem a Range-t fogjuk használni, hanem a Cells-t.

Tehát ha a B4 cellára akarok hivatkozni, akkor vesszővel elválasztva, előbb a sor, majd az oszlop számát adom meg.

Sub Gomb1_Click()
   Cells(4, 2).Select
End Sub

Hogyan adunk meg Cells segítségével tartományt?
Mivel csak a Range tud tartományt megadni, így kombinálnunk kell a kettőt.
Például jelöljük ki a B4:D5 tartományt:

Sub Gomb1_Click()
   Range(Cells(4, 2), Cells(5, 4)).Select
End Sub

Mit látunk itt? Két Cells függvénnyel meghatároztuk a tartományunk első és utolsó celláját. Majd a Range segítségével, zárójelben, vesszővel elválasztva beírtuk azokat.

Elsőre lehet bonyolultnak tűnik, de értelmezzük, ízlelgessük és csináljunk egy-két példát rá. Ha megvagyunk, bonyolítsuk még egy picit. 😉

III. Munkalap hivatkozás

Megtanultuk a Range és a Cells függvények használatát. Azonban tudni kell, hogy ezeknek a hatásköre csak az éppen aktív munkalap.
Elméletileg most a Munka1 lapon dolgoztunk, ott van a gombunk is. Töröljük ki az összes cella értékét, csak a gomb maradjon a lapon. Visual Basicbe írjuk bele ezt:

Sub Gomb1_Click()
   MsgBox Range("B4").Value
End Sub

Ezzel ugye kiírjuk a B4 cella értékét. (De mivel üres a B4 cella, így egy nagy büdös semmi lesz az eredménye.)

Most hozzunk létre egy új Munkalapot: Munka2 néven.

Írjuk be a B4 cellába, hogy 123.

Ha visszamegyünk az első munkalapunkra, és megnyomjuk a gombunkat, akkor az üres párbeszédablak jelenik meg. Mivel a kódunk az éppen aktív munkalapot tekinti hatáskörének, azaz a Munka1-et.

Ha azonban a kódunkban a Range elé odaírjuk, hogy Worksheets(„Munka2”)., akkor már a Munka2 nevű lapra fog hivatkozni.

Sub Gomb1_Click()
   MsgBox Worksheets("Munka2").Range("B4")
End Sub

Videón így néz ki:

Lehetőségünk van a munkalapok sorszámával is kifejezni magunkat, ilyenkor az a sorrend számít, ahogy egymás után következnek a munkalapok, tehát a név nem releváns.

Sub Gomb1_Click()
   MsgBox Worksheets(2).Range("B4")
End Sub

Ebben az esetben is a Munka2 munkalapra hivatkozunk.

Gyakorlati feladat

1. Legyen kettő munkalapunk: Munka1 és Munka2
2. Munka1-en „A” oszlopba vegyünk fel pár szám értéket: A1=10; A2=20; A3=30
3. Munka1-en hozzunk létre egy gombot
4. A gomb megnyomásakor a Munka2 „B” oszlopában jelenjenek meg ugyanazok az értékek, amelyeket a Munka1-en vettünk fel.
5. A program végezetével írjuk ki egy párbeszédablakban, hogy „A művelet sikeresen befejeződött.”

Próbáld megoldani a feladatot, használd a Range és a Cells metódust is! Ha megakadtál, vagy csak ellenőriznéd magad, akkor ez a videó segít neked, vagy még lejjebb megtalálod a teljes kódot is.

Sub Gomb1_Click()

   Worksheets("Munka2").Range("B1").Value = Range("A1").Value
   Worksheets("Munka2").Range("B2").Value = Range("A2").Value
   Worksheets("Munka2").Cells(3, 2).Value = Cells(3, 1).Value

   MsgBox "A művelet sikeresen befejeződött."

End Sub

Összefoglalás

– A mai alkalommal megnéztünk két féle módot is (Range, Cells), amivel hivatkozni tudunk egy cellára vagy egy tartományra
– Megtanultuk a Select és a Value kifejezést
– Már tudunk értéket adni egy cellának VBA-ban
– Megtanultunk munkalapokra is hivatkozni

Mennyire találtad hasznosnak ezt cikket?
[Összes szavazat: 19 Átlag értékelés: 5]