
triviální makro
Zdravím,
pokouším se začínat s makry v Excelu. Chci udělat takovou logickou hříčku - v buňkách H7 až H11 může být logická hodnota 1 nebo 0. Každé z pěti tlačítek změní logickou hodnotu v jiných buňkách (např. tlačítko 1 mění hodnotu v buňce H7, tlačítko 2 mění hodnotu v buňce H7 a H9, atd.). Problém je, že mi to nefunguje:) Tlačítko 2 změní pouze hodnotu H7 z 1 na 0, ale to je vše. Najde tam prosím chybu? Díky
Sub Makro2()
'
' Makro2 Makro
'
'
h1 = Range("H7").Value
h2 = Range("H8").Value
h3 = Range("H9").Value
h4 = Range("H10").Value
h5 = Range("H11").Value
If h1 = 0 And h3 = 0 Then
Range("h7").FormulaR1C1 = "1" And Range("h9").FormulaR1C1 = "1"
ElseIf h1 = 0 And h3 = 1 Then
Range("h7").FormulaR1C1 = "1" And Range("h9").FormulaR1C1 = "0"
ElseIf h1 = 1 And h3 = 0 Then
Range("h7").FormulaR1C1 = "0" And Range("h9").FormulaR1C1 = "1"
Else
Range("h7").FormulaR1C1 = "0" And Range("h9").FormulaR1C1 = "0"
End If
End Sub
Celé, čo si vytvoril, sa dá zapísať, po opravách, takto:
alebo trocha upravenejšie, po odstránení zbytočností, takto:
a dalo by sa to ešte jednoduchšie, keby si namiesto 1 a 0 používal True a False, lenže:
Nech Ti už tlačítka menia hodnoty v bunkách H7 až H11 hocijak, keď prebehne kód pre novú kombináciu hodnôt v H7 až H11 , horný, či spodný kód robí to isté: pri každom spustení makra sa znegujú hodnoty v bunkách H7 a H9. Nič iné
Priraďovanie do premenných h1...h5 tu nemá zmysel a príkazy, ktoré sa majú vykonať pri splnení určitých podmienok, sa nespájajú operátorom And, ale jednotlivé príkazy sa píšu samostatne, do svojich riadkov.
To ale asi nie je to, čo si chcel. Možno si len nedobre popísal celú činnosť, cieľ si už nepopísal vôbec, alebo máš chybnú predstavu o tom, čo sa vlastne deje pri vykonávaní kódu a čo všetko treba premyslieť a ako to povedať počítaču, aby sa to správalo tak, ako Ty chceš.
To je to prvé, čo musíš, pri začínaní s programovaním, vedieť.
Urob si kontrolu:
Otvor si dve okná vedľa seba, pričom v prvom budeš mať hárok Excelu s bunkami H7 až H11 a v druhom budeš mať Editor VBA s týmto kódom.
V okne Editora VBA sa nastavíš do názvu makra a stláčaním klávesy F8 necháš kód makra krokovať po riadkoch, pri čom môžeš sledovať v hárku Excelu, ako sa vykonávajú jednotlivé príkazy a čo spôsobujú...
Výsledok tohto celého:
Keďže nevieme, čo si chcel dosiahnuť, ani Ti neporadíme, v čom máš chybu.
P.S. Tie kódy, čo som sem vložil, sú len tým istým, čo si napísal Ty, po odstránení chýb spôsobu zápisu...
sorry... našiel som si tam chybu...
Správne je:
toto robí to čo chceš:
po každom spustení zneguje obsah buniek H7 a H9
P.S.
tento príspevok je len kvôli oprave chyby, ale ešte raz zrekapitulujem aj ostatné:
Ak budeš namiesto 0 používať výraz False (Nepravda) a namiesto 1 výraz True (Pravda), tak to bude ešte jednoduchšie:
Alebo ešte ako píše nižšie Machr, môžeš samotnú negáciu použiť ako samostatnú procedúdu, do ktorej budeš tlačítkom odosielať adresy viacerých buniek ako argumenty.
Je to detto to, čo píše Machr, rozdiel je len v spôsobe negácie.