VBA – Excel – součet vybrané oblasti buněk

Datum vydání: 2012-02-27 07:08:47; aktualizováno: 2019-11-20 08:58:56

Součet na tlačítko

Součet na tlačítko

Makro dělá to, co dělá standardně funkce SUMA(). Do buňky C11 umístí vzoreček se sumou na právě vybranou oblast buněk.

Protože po kliknutí na tlačítko vybraná oblast zmizí, tak pokud chceme, aby byla vybraná oblast buněk vidět i po stisktnutí tlačítka je nutné si vybranou oblast uložit a následně ji opětovně vybrat.

Funkce Selection.Address() pracuje stejně jako Range.Address, tj. vrací adresu vybraných buněk např. $B$3:$C$4. Tato adresa je pak doplněna do vzorečku SUMA. VBA neumí pracovat s českými názvy funkcí, takže se používá anglické označení SUM().

Pojmenování tlačítka

Jinak snažím se tlačítka pojmenovávat smysluplnými názvy. Pojmenování tlačítka můžete udělat v režimu návrhu (karta Vývojář/Ovládací prvky/Režim návrhu). Vyberete tlačítko, stisknete pravé tlačítko a dáte volbu Vlastnosti. Zobrazí se okno Properties a zde si můžete změnit např. Name a Caption.

Bohužel se mi stalo, že Excel po zavření uloženého souboru si tlačítko přejmenoval na svůj původní název. Tím pádem pak tlačítko přestalo fungovat. Při zvolení o něco kratšího jména bylo už vše ok.

 

Zdrojový kód Visual Basic for Applications

'soucet resen pomoci vzorecku SUM aplikovaneho na aktualne vybranou oblast
Private Sub CommandButtonSoucet_Click()
    Dim myRange As Range
    'ulozime si vyber
    Set myRange = Selection
    Range("C11").Formula = "=SUM(" & Selection.Address & ")"
    'znova vybereme vyber, protoze byl automaticky zruseny
    myRange.Select
End Sub

 

Součet automaticky na vybranou oblast

Součet automaticky

Zde je druhá varianta sečtení čísel. Zde nečekáme na stisknutí tlačítka, ale rovnou provedeme sumu vybrané oblasti buněk. Jde o reakci na událost SelectionChange objektu Worksheet.

Danou událost najdete v okně Visual Basic, kde se zobrazují makra. Nahoře místo (General) vyberete Worksheet a zvolíte proceduru SelectionChange. Následně dopíšete programátorský kód.

Worksheet

Zdrojový kód Visual Basic for Applications

' soucet se zobrazuje ihned po vybrani bunek bez jakekoli nutne reakce uzivatele
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("C11").Formula = "=SUM(" & Target.Address & ")"
End Sub

Zdrojový soubor

xlsm soucet-vybrane-oblasti-bunek.xlsm

txt soucet-vybrane-oblasti-bunek-tlacitko.txt

txt soucet-vybrane-oblasti-bunek-automaticky.txt