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
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.
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
soucet-vybrane-oblasti-bunek.xlsm