< návrat zpět

MS Excel


Téma: Vyhledání dat rss

Zaslal/a 18.11.2020 15:05

Dobrý den,

rád bych požádal o pomoc se zadáváním a vyhledáním dat ve VBA. Na listu Home se mi spustí formulář, který umí vyhledat data dle pole "Sp.Zn." Vložte např. do pole Sp.Zn. hodnotu z Databaee sloupce D.

1) Úplně nahoře formuláře v oranžovém poli bych potřeboval nastavit výběr Úkonu podle listu ČÍSELNÍKY. Tj. Pokud se vybere "Žádost o povolení zk", tak aby se v políčku Úkon vybíralo jen z buněk C2:C16, pokud se vybere Typ Změna, pak bude Úkon k výběru z C17:C31 a pokud se byvere Typ Kontrola, pak se bude vybírat Úkon z C32:C37. Číselník lze jakkoli rozšířit / upravit.

2) každý zápis se uloží jako nový řádek. To je požadavek klienta. Když se vyhledává dle Sp.Zn., tak se vždy berou hodnoty z posledního řádku, obsahující Sp.Zn. To je správně. Formulář ale obsahuje list Kontroly, kde je Kontrola 1 - 3. Např. hodnota pole z listu Kontrola 1 - Datum oznámení se uloží do Database sloupce AV. Když by nastala Kontrola 2, v poli Úkon se vybere Oznámení o kontrole 2 a ve formuláři v listu Kontrola 2 se zapíše hodnota z pole datum oznámení do sloupce database - AV. To je správně.
Potřeboval bych ale nastavit vyhledání dle Sp.Zn. tak, aby se v listu Kontrola 1 vypsaly hodnoty z AV z řádku o kontrole 1 a do listu Kontrola 2 vypsala hodnota z AV z příslušného řádku o kontrole 2. Datové rozhraní databáze nelze upravit. není možné přidávat další sloupce.

Děkuji za případnou úvahu a pomoc.

Zaslat odpověď >

Strana:  « předchozí  1 2 3 4 5   další »
#048988
avatar
Jiří497, děkuji za komentáře. Snažil jsem se podle toho ještě rozšířit na další sloupce, ale podařilo se mi jen ze čtvrtiny. Můžete se, prosím, ještě podívat na přiložený soubor?
Snažím se o dohledání Výzev1-4, ale podařilo se mi dohledat jen jednu, viz v souboru opět barevně ukázáno, ale nemohu pochopit, kde dělám chybu.
Podobně budu pak dohledávat Prodloužení1-3, kde bych (předpokládám) opět měl stejný, ale upravený kód.
Děkuji za ochotu a pomoc.
Příloha: zip48988_kz7.zip (55kB, staženo 10x)
citovat
#048992
avatar
Problém je v "Exit For". Tmto příkazem opustíte cyklus hned po načtení první výzvy a další se tudíž nenačtou.
Je zde rozdíl oproti Kontrole, kdy se načítala jen jedna (poslední) Kontrola. Výzvy se načítají všechny.

Pak ještě nějaké drobnosti, které nemají na načítání vliv.
Příloha: zip48992_kz8.zip (57kB, staženo 10x)
citovat
#048994
avatar
Tady je i Prodloužení a Žádostcitovat
#049019
avatar
Jiří497, mockrát děkuji!!!!! Vypadá to, že to je přesně ono, co jsem potřeboval! :)
Nyní si kód rozšiřuji i pro další sloupce a řádky dle listu Číselníky a zatím to funguje skvěle. :)citovat
#049022
avatar
Až teď jsem si všiml, že jsem včera nepřiložil soubor. Tak tedy až teď.
Příloha: zip49022_kz9.zip (60kB, staženo 12x)
citovat
#049040
avatar
Jiří497, mockrát děkuji za přílohu i zjednodušení.
Funguje to, jak má! 1citovat
#049045
avatar
Asi poslední úpravy. Ještě jsem makro trochu pročistil.
1. Bylo tam zbytečně několikrát If pomoc = True Then
With Worksheets("Database")
, které fakticky na sebe navazovaly, tak jsem to nechal jen jednou přes skoro celé makro.
2. Proměnné "kontrolaVyzvy", "kontrolaProdlouzeni"... jsem nahradil jen jednou proměnnou "kontrola"
3. Doplnil jsem vymazání všech TextBoxů a ComboBoxů, když není nalezena SpZn. Je to v cyklu For Each, aby se nemusely vypisovat všechny prvky.

Ještě je potřeba naformátovat všechny datumy (pokud to je potřebné). Některé jsou již udělané, tak podle toho to zvládnete sám. Tento příkaz:
.Range("AW" & kontrola.Row).Valuedoplnit o Format$:
Format$(.Range("AW" & kontrola.Row).Value, "dd.mm.yyyy")
Příloha: zip49045_kz10.zip (60kB, staženo 12x)
citovat
#049048
avatar
Děkuji za ochotu, mrknu na to.
(A já to dnes poctivě všechno vypisoval a kopíroval :) )
Další fází u mě bude validace dat, ale to bude asi na jiné vlákno.
hledám info, jak zajistit, aby se zapsalo z buňky třeba jen
"abc+nějaké číslo", ale údaj musí začínat "abc"
Pokud nenajdu, tak se asi zeptám v novém vlákně.
ještě jednou díky moc. :)citovat
#049049
avatar

MilaF napsal/a:

(A já to dnes poctivě všechno vypisoval a kopíroval :) )
Sorry. Dřív jsem to nestih 3
Něco na tento způsob:Sub pokus()
Text = "abc text 1 další text"
If Mid(Text, 1, 3) = "abc" Then
pozice = InStr(1, Text, "1")
vysledek = Mid(Text, 1, 3) & Mid(Text, pozice, 1)
MsgBox vysledek
End If
End Sub
záleží, jestli je to číslo známé nebo necitovat
#049065
avatar
Jiří497, ještě jednou děkuji moc za ochotu a pomoc, pročištěná verze je super.
Ohledně validace, tam zjišťuji, co se musí hlídat. Zkusím sám, případně založím nové vlákno.citovat

Strana:  « předchozí  1 2 3 4 5   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Čas od do

lubo • 19.4. 16:30

Makro smyčka

MilanKop • 19.4. 10:46

Makro smyčka

elninoslov • 19.4. 9:02

Čas od do

elninoslov • 19.4. 8:46

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32