Makrók alkalmazása VBA felületen Gazdasági feladatok Excel 2007-ben Somogyi Edit
Adó számítása
Program elkészítésének lépései Adósávok és eredménycellák megadása Párbeszédpanel elkészítése Vezérlőelemek felvétele Tulajdonságok megadása Programkód megírása
Adósávok és eredménycellák
Párbeszédpanel elkészítése
Programkód megírása Munkafüzet megnyitásakor a párbeszédpanel megjelenjen Private Sub Workbook_Open() Panel.Show End Sub
Az Adó gomb megnyomásakor számolja ki a jövedelmet, az adókulcsot és az adót. Private Sub Adozas_Click() jov = Val(Bevetel.Text) - Val(Koltseg.Text) tartomany = Worksheets("Munka1").Range("a2:c3") kulcs = WorksheetFunction.VLookup(jov, tartomany, 3) / 100 If jov > 1700000 Then Ado = 306000 + (jov - 1700000) * kulcs Else Ado = jov * kulcs Cells(5, 2) = FormatCurrency(jov, 0) Cells(6, 2) = FormatPercent(kulcs, 0) Cells(7, 2) = FormatCurrency(Ado, 0) End Sub
BÉT árfolyamok elemzése
Párbeszédpanel felépítése
Programkód megírása A munkafüzet megnyitásakor hozzon létre egy új munkalapot, és indítsa el az Arfolyam nevű makrót. Private Sub Workbook_Open() Sheets.Add Arfolyam End Sub
Az Arfolyam makró elemei Fejléc Sub Arfolyam() 'Oszlopnevek Cells(1, 1) = "Állampapír neve" Cells(1, 2) = „Állampapír fajtája” Cells(1, 3) = "Tranzakció ideje" Cells(1, 4) = "Vétel" Cells(1, 5) = "Eladás" Cells(1, 6) = "Záró" Cells(1, 7) = "Mennyiség" Cells(1, 8) = "Változás" Cells(1, 8) = "Összérték" ’Tartomány kijelölése ActiveSheet.Range("a1:i20").Select 'Karakterformázás With Selection.Font .Name = "Times New Roman" .FontStyle = "Bold Italic" .Size = 14 End With 'Keretezés Selection.Borders(xlLeft).LineStyle = xlContinuous Selection.Borders(xlRight).LineStyle = xlContinuous Selection.Borders(xlTop).LineStyle = xlContinuous Selection.Borders(xlBottom).LineStyle = xlContinuous Selection.BorderAround xlDouble 'Oszlopszélesség igazodása Selection.EntireColumn.AutoFit ’Párbeszédpanel megjelenítése ArPanel.Show End Sub
Állampapír kiválasztása
Részvény kiválasztása A részvény kiválasztásával megjelenik a megfelelő lista, amely az eredeti táblázatban van Private Sub Reszveny_Click() Lista.RowSource = "k2:k8" End Sub
Változás
Programkód A Valtoz függvény kiszámolja az eladás és záróérték különbségét Private Function Valtoz() As Double Valtoz = _ Val(Eladas.Text) - Val(Zaro.Text) End Function A Változás nyomógombra kattintva kiírja a az eredményt Private Sub Valtozas_Click() MsgBox "Az állampapír értékének változása " & _ FormatCurrency(Valtoz,0) , vbOKOnly, "Változás" End Sub
Összérték
Programkód Az Osszes függvény kiszámolja az eladás és a mennyiség szorzatát Private Function Osszes() As Double Osszes = Val(Mennyiseg.Text) * Val(Eladas.Text) End Function Az Összérték gombra kattintva kiírja az eredményt Private Sub Osszertek_Click() MsgBox "Az állampapír eladási összértéke " _ & FormatCurrency(Osszes), vbOKOnly, "Összérték" End Sub
Adatok kiírása a táblázatba
Programkód elemei Private Sub Felvitel_Click() Const ksor=2 ’Hányadik sorban állunk If sor < 2 Then sor = ksor Else sor = sor + 1 ’Melyik állampapírt választottuk If Reszveny.Value = True Then nev = "Részvény" If Kotveny.Value = True Then nev = "Kötvény" If Befektetes.Value = True Then nev = "Befektetési jegy" ’Adatok kiírása táblázatba Cells(sor, "a") = nev Cells(sor, "b") = Lista.Text Cells(sor, "c") = Ido.Text Cells(sor, "d") = Val(Vetel.Text) Cells(sor, "e") = Val(Eladas.Text) Cells(sor, "f") = Val(Zaro.Text) Cells(sor, "g") = Val(Mennyiseg.Text) Cells(sor, "h") = Valtoz Cells(sor, "i") = Osszes 'Oszlopszélesség igazodása Selection.EntireColumn.AutoFit 'Állapot visszaállítása Vetel.Text = "" Eladas.Text = "" Zaro.Text = "" Mennyiseg.Text = "" Lista.Text = "Válassz egy értékpapírt!"
Statisztika panel Ha legalább két sor van a táblázatban jelenítse meg a Statisztika panelt Private Sub Statisztika_Click() If Cells(2,1)<>”” Then StatisztikaPanel.Show Else MsgBox _ "Töltse fel a táblázatot!", vbOKOnly, "Keresés" End Sub
Diagram
Programkód Private Sub Diagram_Click() ’Hány sorban vannak adatok Do While Cells(i, 1) <> "" i = i + 1 Loop sor = i –1 ’Diagram létrehozása ActiveSheet.Shapes.AddChart.Select With ActiveChart .SetSourceData Source:=Range(Cells(2, 4), Cells(sor, 6)) .ChartType = xlLineMarkersStacked ‘Jelmagyarázat .SeriesCollection(1).XValues _=ActiveSheet.Range(Cells(2, 1), Cells(sor, 1)) .SeriesCollection(1).Name = "Vétel" .SeriesCollection(2).Name = "Eladás" .SeriesCollection(3).Name = "Záró" ‘Tengelyek, cím .SetElement (msoElementChartTitleAboveChart) .SetElement _(msoElementPrimaryCategoryAxisTitleAdjacentToAxis) .SetElement _(msoElementPrimaryValueAxisTitleHorizontal) .Axes(xlCategory).AxisTitle.Text = "állampapír" .Axes(xlValue).AxisTitle.Text = "érték" .ChartTitle.Text = "BÉT árfolyamok mozgása" ‘Létrehozás új munkalapon .Location xlLocationAsNewSheet End With End Sub
Statisztika Panel
Összeg és átlag
Programkód Hány sort összegezzünk? Function sorok() As Byte i = 1 Do While Cells(i, 1) <> "" i = i + 1 Loop sorok=i-1 End Function Melyik papírt választottuk? Function papir() As String If Reszveny.Value = True Then papir = "Részvény" If Kotveny.Value = True Then papir = "Kötvény" If Befektetes.Value = True Then papir = "Befektetési jegy" Melyik tranzakciót választottuk? Function Akcio() As Byte If Vetel.Value = True Then Akcio = 4 If Eladas.Value = True Then Akcio = 5 If Zaro.Value = True Then Akcio = 6
Összeg és átlag Private Sub Osszatlag_Click() osszeg = 0 db = 0 For i = 2 To sorok If Cells(i, 1) = papir And Akcio > 0 Then szam = Val(Cells(i, Akcio)) db = db + 1 osszeg = osszeg + szam End If Next If db = 0 Then atl = 0 If db >= 1 Then atl = osszeg / db MsgBox "Az összeg: " & FormatCurrency(Osszeg, 0) & _ vbCrLf & "Az átlag: " + FormatCurrency(atl, 0), _ vbOKOnly, "Összeg és átlag" End Sub
Minimum és maximum
Programkód Private Sub Minmax_Click() max = 0 min = 100000 For i = 2 To sorok If Cells(i, 1) = papir And Akcio > 0 Then szam = _ Val(Cells(i, Akcio)) If szam > max Then max = szam If szam < min And szam > 0 Then min = szam Next MsgBox "A legnagyobb érték: " & FormatCurrency(max, 0) _ & vbCrLf & "A legkisebb érték: " & FormatCurrency(min, 0), _ vbOKOnly, "Minimum és maximum" End Sub
Megszámolás papír szerint
Programkód Private Sub Megszamolaspapir_Click() rdb = 0 kdb = 0 bdb = 0 For i = 2 To sorok If Cells(i, 1) = "Részvény" Then rdb = rdb + Cells(i, 7) If Cells(i, 1) = "Kötvény" Then kdb = kdb + Cells(i, 7) If Cells(i, 1) = "Befektetési jegy" Then bdb = bdb + Cells(i, 7) Next i MsgBox "Részvény: " & rdb & " db" & vbCrLf _ & "Kötvény: " & kdb & " db" & vbCrLf & _ "Befektetési jegy: " & bdb & " db", _ vbOKOnly, "Megszámolás" End Sub
BÉT árfolyamok beolvasása internetről Adatok Külső adatok átvitele Weblapról Beállítások
ArPanel módosul
Diagram látványosabb
Statisztika panel módosul
Értékpapír legkisebb vételi ára
Értékpapír legnagyobb záró értéke
Adott időintervallumban forgalmazott értékpapírok záró összértéke és átlaga
Programkód Private Sub Osszegatlag_Click() mettol = CDate(Tol.Text) meddig = CDate(Ig.Text) db = 0 ossz = 0 For i = 2 To sorok If Cells(i, 2) >= mettol And Cells(i, 2) <= meddig And Akcio > 0 Then szam = Val(Cells(i, Akcio)) mennyiseg = Val(Cells(i, 6)) ossz = ossz + szam * mennyiseg db = db + 1 End If Next If db = 0 Then atl = 0 If db >= 1 Then atl = ossz / db MsgBox "Az adott időintervallumban az értékpapírok" & vbCrLf & "összege: " &FormatCurrency(ossz, 0) &" átlaga: " & FormatCurrency(atl, 0), vbOKOnly, "Összeg és átlag" End Sub
További információk Megjelenő könyv Mintapéldák A rendezvény honlapja Gazdasági feladatok Excel 2007-ben Mintapéldák http://www.jos.hu A rendezvény honlapja http://www.microsoft.com/hun/tantov2008
Somogyi Edit e.somogyi@chello.hu Köszönöm a figyelmet! Somogyi Edit e.somogyi@chello.hu