User Tools

Site Tools


tanszek:oktatas:muszaki_informatika:vba_feladatok

This is an old revision of the document!


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 Each ciklus végigmegy a jelenlegi munkafüzet összes munkalapján.
  • A lista változóhoz hozzáadjuk a munkalap nevét, majd egy új sort, hogy elkülönítsük a neveket.
  • Végül, a MsgBox fü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 = Selection utasítással.
  • Egy Scripting.Dictionary objektumot 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.

4. 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?

  1. A makró először beállítja a munkalapot az aktív munkalapra (`ActiveSheet`).
  2. Az utolsoSor és utolsoOszlop vá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.
  3. 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.
  4. Ezután létrehoz egy `Range` objektumot, amely az első cellától (A1) az utolsó nem üres celláig tart.
  5. 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.1708613249.txt.gz · Last modified: 2024/02/22 14:47 by knehez