tanszek:oktatas:muszaki_informatika:vba_feladatok
This is an old revision of the document!
Table of Contents
1. Munkalapok neveinek listázása
Ez a feladat egy olyan makró létrehozását kérte, amely listázza az összes munkalap nevét egy adott munkafüzetben. Az alábbi makró bemutatja, hogyan lehet végrehajtani ezt a feladatot.
Sub MunkalapokListazasa()
Dim ws As Worksheet
Dim lista As String
lista = "Munkalapok listája:" & vbCrLf
For Each ws In ThisWorkbook.Worksheets
lista = lista & ws.Name & vbCrLf
Next ws
MsgBox lista, vbInformation, "Munkalapok"
End Sub
Hogyan Működik?
- A
Sub MunkalapokListazasa()egy eljárás, amely nem vár visszatérési értéket. Dim ws As Worksheet- Egy változót deklarálunk, amely a munkafüzet minden egyes munkalapjára hivatkozik a ciklus során.Dim lista As String- Egy szöveges változót hozunk létre, amelyben összegyűjtjük a munkalapok neveit.- A
For Eachciklus végigmegy a jelenlegi munkafüzet összes munkalapján. - A
listaváltozóhoz hozzáadjuk a munkalap nevét, majd egy új sort, hogy elkülönítsük a neveket. - Végül, a
MsgBoxfüggvény segítségével megjelenítjük az összegyűjtött munkalapneveket egy üzenetablakban.
2. Duplikált értékek keresése és kiemelése makróval
A feladat egy olyan makró létrehozása, amely megtalálja és kiemeli a duplikált értékeket egy adott tartományban az Excel munkalapon.
Sajnos függvénnyel nem lehet olyan cella paramétereit módosítani, ami más mint a függvény meghívásának cellája. Ezért a használat előtt ki kell jelölni azt a tartományt amit vizsgálni szeretnénk.
Sub DuplikaltakKiemelése()
Dim tartomány As Range
Set tartomány = Selection
Dim cell As Range
Dim ellenőrző As Object
Set ellenőrző = CreateObject("Scripting.Dictionary")
' A tartomány celláinak bejárása
For Each cell In tartomány
If Not cell.Value = "" Then
If ellenőrző.Exists(cell.Value) Then
' Duplikált érték kiemelése piros háttérszínnel
cell.Interior.Color = RGB(255, 0, 0)
Else
ellenőrző.Add cell.Value, Nothing
End If
End If
Next cell
End Sub
Hogyan Működik?
- A makró először meghatározza a felhasználó által kijelölt tartományt a
Set tartomány = Selectionutasítással. - Egy
Scripting.Dictionaryobjektumot hoz létre, amelyben csak különböző értékek tárolhatók. - Végigiterál a tartomány összes celláján.
- Ellenőrzi, hogy a cella értéke üres-e. Ha nem, megvizsgálja, hogy az érték szerepel-e már a Dictionary-ben.
- Ha az érték már szerepel (azaz duplikált), a cella hátterét pirosra színezi.
- Ha az érték még nem szerepel, hozzáadja a Dictionary-hoz.
3. Dinamikus Tartományok Kezelése
Ez a feladat egy makró létrehozását valósítja meg, amely képes dinamikusan kezelni és frissíteni egy tartomány méretét az aktív munkalapon.
Sub DinamikusTartomanyFrissites()
Dim tartomany As Range
Dim utolsoSor As Long, utolsoOszlop As Long
Dim munkalap As Worksheet
Set munkalap = ActiveSheet
With munkalap
utolsoSor = .Cells(.Rows.Count, "A").End(xlUp).Row
utolsoOszlop = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set tartomany = .Range(.Cells(1, 1), .Cells(utolsoSor, utolsoOszlop))
End With
tartomany.Select
MsgBox "A dinamikus tartomány kijelölve: " & tartomany.Address, vbInformation, "Tartomány Frissítve"
End Sub
Hogyan Működik?
- A makró először beállítja a munkalapot az aktív munkalapra (`ActiveSheet`).
- Az
utolsoSorésutolsoOszlopváltozókat használva megkeresi az utolsó nem üres cellát a “A” oszlopban és az 1. sorban, hogy meghatározza a tartomány határait. - Az `.End(xlUp).Row` és `.End(xlToLeft).Column` metódusok segítségével határozza meg az utolsó sor és oszlop számát.
- Ezután létrehoz egy `Range` objektumot, amely az első cellától (A1) az utolsó nem üres celláig tart.
- Végül kijelöli ezt a tartományt és megjelenít egy üzenetablakot, amely tájékoztatja a felhasználót a frissített tartomány címéről.
tanszek/oktatas/muszaki_informatika/vba_feladatok.1708613259.txt.gz · Last modified: 2024/02/22 14:47 by knehez
