Office Guru

Akciógombok feltételes aktiválása/deaktiválása egy rövid kódsorral

2017. január 14. - Office Guru

A mai posztban egy olyan olvasói kérdés kerül megválaszolásra, amely VBA-ban járatos hozzáértők számára valószínűleg nem jelent túlságosan komoly kihívást, azonban mégis úgy gondoltam, hogy megosztom a kérdést és a választ egy példán keresztül, mert a téma alapján eléggé valószínű, hogy egy, még az út elején járó felhasználó számára igencsak hasznos tudnivalóról van szó, ami ráadásul még igen látványos is lehet.

A kérdés nagyjából arra irányult, hogy milyen módszerrel lehet gombok, boxok vagy éppen scroll barok tulajdonságait VBA-ból állítgatni - a példa most egy egyszerű nyomógomb tulajdonságaira lesz kihegyezve.

Első lépésként lépjünk a Developer ribbonfül Controls szekciójának Insert menüjébe:

enabled1.jpgInnen pedig szúrjunk be szépen két Opciógombot egymás alá.

enabled2.jpgHa ezzel megvolnánk, szúrjunk be ugyaninnen egy Command Buttont is (akciógomb):

enabled3.jpgMi a cél? Alig egy tucat kódsor segítségével azt fogjuk elérni, hogy az első opciógomb bekapcsolásával az akciógombunk ki fog szürkülni és nem kattinthatóvá válik, míg a második gomb benyomásával ismét kattintható lesz, ráadásul a színe is megváltozik.

Csak a példa kedvéért rendeljünk hozzá az akciógombhoz valamiféle tényleges akciót, ennek érdekében kattintsunk duplán a gombon Design módban, majd a megnyíló VBA-editorban feldobott CommantButton1_Click() subrutinba írjuk be valamiféle eseményt:

Private Sub CommandButton1_Click()
Range("G14").Value = 20
End Sub

enabled4.jpgAzaz ha a gombra kattintunk, akkor a G14-es cella értéke 20-ra fog változni.

Ezután rendeljünk eseményeket/vizsgálatokat a két opciógombhoz is, kezdésként kattintsunk duplán Design módban az első opciógombra. Az így létrejött OptionButton1_Click() subrutinban egy If utasítást kell használnunk, amivel nagyjából azt a vizsgálatot fogjuk elvégezni, hogy ha az opciógomb állapota bekapcsolt (OptionButton1.Value = True), akkor módosítsa az akciógombunk színét (CommandButton1.BackColor) az inaktivitás jelzéseként egy másik színre, illetve az Enabled paraméterét (CommandButton1.Enabled) állítsa False-ra, azaz a gomb nem lesz kattintható.

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
CommandButton1.BackColor = 14606046
CommandButton1.Enabled = False
End If
End Sub

Majd ezt szépen ismételjük meg a második opciógombbal is, értelemszerűen azzal a változtatással, hogy ha az a gomb lesz bekattintva, akkor a színt állítsuk vissza az eredeti színre vagy egy teljesen másik színre megint, illetve az Enabled paramétert állítsuk True értékre, így téve ismét kattinthatóvá a nyomógombot.

Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
CommandButton1.BackColor = 8882055
CommandButton1.Enabled = True
End If
End Sub

enabled5.jpgMost szépen visszaballaghatunk az Excel munkalapra, ahol egy rövid teszt meg is mutatja, hogy tökéletesen működik, amit szerettünk volna:

enabled6.jpg

enabled7.jpgInnentől kezdve már csak a formázgatás, tuningolgatás van hátra, meg hát persze értelemszerűen a megfelelő integrálás egy már meglévő makrónkba, azzal az elég gyakran ismételgetett észrevétellel, hogy opciógombokat leginkább userformon célszerű használni - nem mintha persze ezzel így most gond lenne.

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr10012126445

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása