Tak ďalšie úpravy. Už ani nebudem popisovať čo som pomenil. Snáď na to prídeš.
Dámy a páni dal by som si tuším ruku odťať za to, že mi v noci hádzalo chybu v Report/report. :) Samozrejme vo Worksheets. No čo už, tak budem o ruku kratší. Možno som ten názov listu len zle opísal. Kolega eLCHa má pravdu. Takže tú jednu vetu beriem späť.
No uvidíme, čo na to hans66, či mu niečo z toho bude k prospechu.
Skús tento xlsx.
Uf. Ani neviem kde začať. Treba používať jednotný typ zápisu názvov pre celý zošit. Keď listy s diakritikou tak všetky, a naopak. Keď prvé písmeno veľké, tak všetky listy. Pozor na odkazy na list, Worksheet("Report") nieje to isté ako Worksheet("report"). Treba používať ak je to možné konštrukciu "With" - "End With", sprehľadňuje, zrýchľuje. Zjednodušil som podmienky, vyriešil som zápis tej karty. Tam bola ďalšia chyba, lebo v nasledujúcom bloku po spomínanom zápise údaju o SD, bol tento prepísaný. Zrušil som Moduly, a dal všetko do Module1. Pri resetovaní (tl. "Nový") nemusíš zadávať do buniek "FormulaR1C1", stačí "Value". Vo výberových zoznamoch si mal "Vyber:", no reset ti tam dal "vyber:", potom nefungujú náväznosti s "ANO/NE". Tie treba podľa mňa doriešiť. Upravil som aj ostatné zápisy do "Report" a "Pausal", aby tam nedávalo slovo "Vyber:" ale vytvoril som poloubiverzálnu fnc pre výpočet hodnoty (hodnota/"NE"). A čo treba doriešiť ? Čo sa má zapísať ak je v bunke "Vyber:", čo ak je tam "---------", a čo ak je tam "". Napr. Internet keď sa zadá "---------", tak napr. zapíšme "NE", čiže nemá. Ale keď zabudneme vyplniť, alebo nebudeme vedieť, bude tam "Vyber:", a v tom prípade by bolo lepšie tam zapísať "N/A". Lebo "NE" v tomto prípade nieje vhodné, a "Vyber:" už vôbec nie.
Ďalej všetky tie dáta do výberových zoznamov by som presunul na iný list, trebárs skrytý. Oblasť Prefix je tam 2x.
Takých vecí tam bolo viac, už mi ani hlava nepracuje. Nabudúce treba presnejšie popísať čo všetko treba, čo nejde, čo by si chcel atď, lebo často veľa vecí so sebou úzko súvisí, a potom to treba 5x prekopať.
Snáď si z toho niečo vyberieš. Dobrú noc.
Nemáš to rovnako. CB1 a CB2 riešia rovno hodnoty D58 a D59 (ANO/NE). Naproti tomu CB3 rieši ANO/NE až na základe zvolenej hodnoty. Ty prečítaš hodnotu "vyber:" a chceš od neho "NE". Chýba ti tam ešte jedna podmienka, ktorá ošetrí, že ak nič nezadáš, čiže v bunke D32 je hodnota "vyber:", tak nech to považuje za "NE". On to totiž inak nemá odkiaľ vedieť, že "vyber:" aj "---------" znamená "NE", a iba akákoľvek iná hodnota znamená "ANO".
'checkbox3 usb kabel
If Worksheets("Formular").CheckBox3.Value = True And Worksheets("Formular").Range("D32").Value <> "vyber:" Then
Worksheets("SD karty").Cells(Radek, 4) = Worksheets("Formular").Range("D32").Value 'SD karta
Else: Worksheets("SD karty").Cells(Radek, 4) = Worksheets("Formular").Range("D59").Value
End If
Aj tak sa to dá ale ešte veľmi zjednodušiť. Niečo na tom ešte zjednoduším, uvidíme, koľko bude času.
Popisky ti tiež nesedia.
Zameň to za toto.
Nájde korektný prvý prázdny riadok v "report", teda bez problému s preskakovaním prvého prázdneho riadku v tvojom príklade. Zádrhel vidím aj v tom, že dátum nekontroluješ, či bol zadaný, ale pritom práve stĺpec s dátumom kontroluješ na posledný záznam. To je problém, pri nevložení dátumu, dôjde k prepísaniu záznamu v reporte! Ja mám radšej vyhľadanie posledného použitého riadku v celej oblasti stĺpcov, nie len v jednom. Môžeme doplniť.
Po upozornení aktivuje danú nevyplnenú bunku.
Vieš o tom, že hľadáš posledný riadok v liste "SD karty" a tento riadok potom použiješ ako "posledný" v "report" ? To by som určo ešte opravil...
EDIT: Sorry, zabudol som tam jeden príkaz (Application.Transpose) - upravené, teraz je to OK.
Inak mohlo by to byť aj takto nejako.
Táto úprava môjho kódu funguje myslím tak ako chceš. Do konštanty je potrebné zadať počet zobrazených riadkov LB (nie položiek !).
Vyhľadáva akúkoľvek časť. Predošlá verzia hľadala len začiatok.
Dá sa to ešte minimalizovať na 1 riadok
Private Function FileExists(fname) As Boolean
FileExists = Dir(fname) <> ""
End Function
alebo ak chce "A" a "N" tak
Private Function FileExists(fname) As String
FileExists = IIf(Dir(fname) <> "", "A", "N")
End Function
Tu to máš s upraveným vzorcom od AL, aj s jeho adresovaním, aj s Tvojim upraveným adresovaním, aj s 49916 riadkami (preto na ext. server)
http://leteckaposta.cz/460507022
Ale vo "Výsledky" je veľká chyba. Odkaz na stĺpec Data!A má byť vo výsledkoch v stĺpci B, a nie až v stĺpci F.
Neplechu tam robí to vymazávanie stĺpcov. Takže nemazať stĺpce ale iba obsah, a stĺpec A, keď už musí byť v tých TXT, tak tento stĺpec ignorovať, určite nemazať. Mazaním stĺpca Excel automaticky prerobí všetky vzorce (aj relatívne aj absolútne) a potom to nesedí. Výpočty sa jednoducho začnú v stĺpci B.
Riešenie by mohlo byť takéto.
Toto je niečo úplne iné, ako si popisoval. Ty si chcel vložiť makrom vzorec, teraz nevkladáš nič nikam. Ale ak to tak môžeš mať, prečo nie.
PS: Lepší popis alebo príloha to vždy zjednoduší.
Nepoužívaš dolárovú notáciu ako v navrhnutom riešení. A máš nerovnaký počet riadkov v A a J, pretože v J začínaš na 3 a v A na 1, pričom končíš na rovnakom riadku. Vzorec ale neodstráni duplu.
Podľa mňa to funguje ako má, až na tie duply.
Odpovede budú vždy len "Ano" a "Ne" ? Žiadna iná? Dá sa na otázku neodpovedať ? Má to byť formulárové okno s tlačítkami "Ano", "Ne", alebo sa berú odpovede z buniek ? Počet otázok je variabilný ? Kde sa tie otázky nachádzajú ? .....
EDIT:
Mohlo by to vyzerať nejako takto. Viď príloha.
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.