Takže, díky za pomoc, nakonec jsem to obešel úpravou if
If Volba1=1 and ListZdroj1.Cells(Radek1, 6).Value = Volba1 Then
VyslHodnoty1 = VyslHodnoty1 + ListZdroj1.Cells(Radek1, 7).Value
Else If If Volba=0 Then
VyslHodnoty1 = VyslHodnoty1 + ListZdroj1.Cells(Radek1, 7).Value
End If
Tj. pokud je volba1=1 vyhodnotí ještě sloupec 6, pokud je volba 0, tak řádek 6 nevyhodnocuje a sečte vždy. Není to to, co jsem chtěl, ale funguje to.
Pěkný den
Není to blbost, protože přesně tak to funguje v běžném excelu. Např. ">5" v countifs znamená, že se zjistí počet čísel větší, než 5 a právě toto "<>" znamená, že se sečtou všechna. Tj. tento znak v tomto případě nefunguje jako nerovnítko, ale jako "vždy splněno". tj. není u něj už nic dalšího uvedeno (třeba např. "<>0" by spočítalo všechno kromě nuly, zatímco pouhé "<>" vše včetně nuly. A mě jde o to, jakou hodnotu nastavit do Volba1, aby to fungovalo stejně. Nebudu vyhodnocovat všech 39 kritérií. Uživatel si vybere buď pouze pracovní poměry (1) anebo vše. Ostatní nepotřebuji.
Díky za pomoc
Dobrý den, jak ve VBA nastavím do podmínky If then to, že podmínka je splněna vždy? V klasickém excelu se zadává "<>", což však ve vba nejde.
Kus kódu:
V prvním případě chci, aby to sečetlo údaje ze 7.sloupce bez ohledu na to, co je v 6. sloupci, v druhém pouze v případě, že je v 6. sloupci číslo jedna.
If ThisWorkbook.Sheets("výsledek").ComboBox1.Value = "všechny druhy důchodově pojištěných vztahů" Then
Volba1 = "všechno" '(je to 39 různých hodnot, text i číslo)
Else
Volba1 = 1
End If
Do While Len(Listzdroj1.Cells(Radek1,3).Value)>0
If ListZdroj1.Cells(Radek1, 6).Value = Volba1 Then
VyslHodnoty1 = VyslHodnoty1 + ListZdroj1.Cells(Radek1, 7).Value
End If
Radek1=Radek1+1
Loop
Prosím, nesnažte se nějak přepsat kód, je to jen jeho zjednodušená verze, ve skutečnosti se ještě všechno dále dělí podle dalších kritérií, tj. kód je daleko delší. Opravdu mi jde jen o to, jak to zapsat do té podmínky, pokud je to možné.
moc děkuji za radu M. Hodek
Beru zpět. Měl jsem překlep v definování výchozí hodnoty proměnné a ono se to tak pokoušelo zapisovat na nultý řádek...
Pěkný den
Dobrý den,
s VBA si hraji teprve několik měsíců a jsem tak naprostý začáteční. Aktuálně jsem došel k využití matic. Mám rozsáhlou databázi (500 000 řádků), ze které pomocí VBA přepočítávám jinou rozsáhlou databázi (cca 250 000 delších řádků).
Každý výsledný řádek mám spočítán jako jednu matici a tu chci vložit do buněk v excelu.
Tohle jde:
Range("E4:R4").Value = VyslCetnost1
a tohle ne:
Range(Cells(RadekVysledek1, 5), Cells(RadekVysledek1, 18)).Value = VyslCetnost1
Jde ale o stejný zápis (VyslCetnosti1 je právě ta naplněná matice). Jak VBA donutit pracovat tím druhým způsobem, protože potřebuji, aby mi smyčka, ve které to běhá, vložila každou vypočítanou matici na další řádek, tj. aby se to měnilo.
Moc děkuji za radu, Martin
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.