» Poradna » Programy

VBA excel CheckBox uložení/načtení hodnoty

 |   |  Microsoft Windows 10 Chrome 71.0.3578.80

Zdravím všechny programátorský guru.Mám formulář, do kterého zadávám 2 hodnoty (z ComboBoxů) a s těmi se provádí výpočty (statistika). Ve formuláři je několik CheckBoxů, kterými si upravuju parametry výpočtů (zaškrtnutím CheckBoxu volám proceduru s výpočtem a ve formuláři se okamžitě mění vypočtené hodnoty).Chtěl bych si ale uložit hodnotu CheckBoxů (.value = TRUE/FALSE) do nějaké buňky(každý box má svojí buňku) a při dalším spuštění formuláře tyto hodnoty načíst. Prostě spustit formulář se stejnýmy parametry, s jakými jsem ho zavřel:If Range("A1") = "Zapnuto" Then CheckBox1.Value = TrueElseIf Range("A1") = "Vypnuto" Then CheckBox1.Value = FalseEnd IfProblém je v tom, že při výpočtech, když zaškrtnu nějaký CheckBox, volám znovu proceduru s výpočtama:Private Sub CheckBox1_Click() Call ComboBox2_ChangeEnd SubA tím se vlastně při načítání formuláře dostanu jen k prvnímu CheckBoxu, dojde ke změně a program skočí rovnou na výpočty. Na ostatní CheckBoxy se už nedostanu.Je možné nějak vložit hodnotu TRUE/FALSE do CheckBoxu bez toho, abych spustil proceduru CheckBox_Click ?Nebo to musím obejít například použitím CommandButtonu, kterým spustím výpočty ručně?

Odpovědi na otázku

 |   |  Microsoft Windows 7 Chrome 69.0.3497.100

Když by jsi přiložil vzorový soubor, možná to už mohlo být hotové.Jen tak z patra. Co si vytvořit globální proměnnou ZakazPrepoctu (Boolean) a při inicializaci Userformu přiřadit hodnotu False (Při hodnotě ZakazPrepoctu=False a CheckBox_Click -> Exit sub), provést načtení hodnot CheckBoxů a změnit hodnotu na True.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 71.0.3578.80

Zjednodušený kód:Public Sub UserForm_Activate() If Range("A1") = "Zapnuto" Then CheckBox1.Value = True 'Odtud program skočí na CheckBox1_Click ElseIf Range("A1") = "Vypnuto" Then 'Sem se už nedostanu, takže tam nemůžu CheckBox1.Value = False 'načíst hodnoty dalších CheckBoxů. Ty seEnd Sub 'tím pádem přepíšou na FalsePublic Sub ComboBox1.Change() If CheckBox1.Value = True Then Vysledek = X * Y ElseIf CheckBox1.Value = False Then Vysledek = X End IfEnd SubPublic Sub CommandButton1_Click() Range("A2") = Vysledek If CheckBox1.Value = True Then Range("A1") = "Zapnuto" ElseIf CheckBox1.Value = False Then Range("A1") = "Vypnuto" End IfEnd SubPrivate Sub CheckBox1_Click() Call ComboBox1_Change End Sub

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 71.0.3578.80

Jsem z toho jelen. To co mi v pátek nefungovalo mi dneska jede. Program funguje, sice to přeskakuje tak a zpátky, ale nakonec se dostane na kontrolu dalšího Checkboxu

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Statistika, False


Určitě si přečtěte

Wi-Fi 6 konečně začíná dostávat smysl. Poradíme, jak ji využít

Wi-Fi 6 konečně začíná dostávat smysl. Poradíme, jak ji využít

** Na trh míří první levné Wi-Fi 6 routery ** Nabídka zařízení, zejména notebooků, každý den roste ** Poradíme, jak nejlépe přejít s domácností na Wi-Fi 6

Tomáš Holčík | 31

Jak funguje kontroverzní program, který ženám krade plavky. Mají se čeho bát?

Jak funguje kontroverzní program, který ženám krade plavky. Mají se čeho bát?

** Strojové učení ještě nepřitáhlo takový zájem jako na začátku prázdnin ** Ne, umělá inteligence nenašla lék na rakovinu ** Naučila se svlékat ženy nejen z plavek

Jakub Čížek | 35



Aktuální číslo časopisu Computer

Test 9 bezdrátových reproduktorů

Jak ovládnout Instagram

Test levných 27" herních monitorů

Jak se zbavit nepotřebných věcí na internetu