< návrat zpět
MS Excel
Téma: UserForm
Zaslal/a marficek119 5.11.2010 18:35
Zdravím, potřebuji pomoct s kódem pro userform.
Mám vytvořený sešit o třech listech, nabídka, položky a nastavení.
Potřebuji ke dvoum userform formulářů pomoci s kódem. Jeden userform slouží pro vkládání nových položek, ale zde bych viděl problém, jelikož je ceník rozdělen do kategorií a podkategorií, v zásadě jde o to,že ve formuláři zadám potřebné informace o nové položce a rovnou ji uložím do příslušné kategorie a podkategorie. Nutno vidět, je to v příloze.
No a druhý userform je zase na vkládání položek z ceníku do nabídkového formuláře. Pokud by to bylo reálné, potřebuji přes formulář UF najít kategorii, podkategorii a pak samotné položky, výběrem položky by se měla položka zapsat do nabídky vč. ceny, MJ, DPH a čísla položky.
Zkoušel jsem v tom laborovat dva dny, ale udělal jsem víc škody než užitku, ani nic podobného jsem ve fóru nenašel. Prosím tedy někoho více šikovného,aby se na to juknul a nějak mě nasměroval.
Zatím moc děkuji,
Marfi
Příloha: 3018_nabidka.rar (149kB, staženo 28x)
marficek119(16.11.2010 22:00)#003179 Tak nějak jsem si to představoval, zadat kritéria a přejít na kategorii. Díky. Jen mě to nějak nef, ukazuje mě to jen první kategorii. Nešlo by to nastavit na pevno bez ohledu na to, zda jsou vyplněné všechny kat a pod?
citovat
Stalker(16.11.2010 22:02)#003180 Sorry že se Vám do toho klucí pletu, ale měl bych otázku na Niffkiho. Výše si napsal "Já před dvěma měsící ani nevěděl co je makro :-)". V tom případě bych chtěl vědět odkud čerpáš info (oblíbená kniha?), páč to co tu vytváříš je masakr? Díky za případnou reakci.
citovat
marficek119(16.11.2010 22:04)#003181 TO je fakt, já se pokouším laborovat ve VBA už půl roku a zatím umím jen vytvořit UserForm a to bez kódu....:-)
citovat
Niffki(17.11.2010 14:43)#003185 Marficek: Podívej se na přílohu a vyzkoušej. Mne to funguje. Zobrazuje se mi tam všechny kat i podkat.
A jinak v mém kódu uvidíš příkaz typu ... cells(číslo(nebo proměnná, číslo(nebo proměnná) ) ... kde první číslo neboli proměnná určuje do kterého řádku se má zapisovat a druhé číslo neboli proměnná určuje do jakého sloupce se má zapisovat, tak zkus si sám kód upravit ;-) a kdyžtak poradím.
A jinak je to pravda, VBA se věnuji cca dva měsíce. Knihu jsem si jen prolistoval v knihkupectví, za takové peníze se mi jí nechce kupovat :-). Taky mě tu dost pomohl Poki a jiní uživatelé. A cca 4h denně dělám nějaké tabulky s makrem, takže je to pro mne už docela rutina ale pořad se učím něco nové a nové. V žádném případě nejsem profík...
Příloha: 3185_nabidka.rar (200kB, staženo 22x) citovat
Niffki(17.11.2010 14:48)#003186 Kecám, možná tak 3-4 měsíce se věnuji VBA
citovat
marficek119(17.11.2010 18:12)#003188 No, asi jsem na to tupej.
Když přidám do nastavení nový sloupec hned na první pozici, tak se logicky formulář posune o jednu buňku. Tudíž jsem dle tvých rad v kódu změnil číslo sloupce o jedno číslo ze 2 na 3 a z 8 na 9. Výsledek-načtou se mě jen kategorie a podkategorie už ne. Co je Špatně...
citovat
Niffki(17.11.2010 18:27)#003189 Zkus se ješte podívat na funkci application.WorksheetFunction.Match - tato funkce vyhledá kategorii v nastavení..
A skládá se ze tří částí...
(1. co má hledat(takže kategorie_NP.Value) *Value v překladu hodnota
2. kde to má hledat(Range("B:B") nahraď tedy na Range("C:C")
3. shoda - vždy piš jen nulu
zkus to
citovat
marficek119(17.11.2010 18:37)#003190 Funguje, nenapadlo mě přepsat nadpis sloupce. Další věc na kterou jsem přišel až dnes, že to načítá pouze 6 podkat ze 7.Kde to v kódu upravit aby to fachalo. Jinak tedy to takto upravit i v tom druhém UF,že?
Můj problém tady v tom je, že se VBA snažím pochopit samodomo a ještě plavu v anglině, takže mě to trošku trvá, než v tom najdu nějakou logiku...
citovat
Niffki(17.11.2010 19:30)#003192 Jo ba jo, moje chyba, omlouvám se..
Kody typu:
Do
If Sheets("Nastavení").Cells(startpodkat, 8) <> "-" Then
PodkateroieList.AddItem Sheets("Nastavení").Cells(startpodkat, 8).Value
startpodkat = startpodkat + 1
Else
startpodkat = startpodkat + 1
End If
Loop Until Sheets("Nastavení").Cells(startpodkat + 1, 8) = ""
Exit Sub
nahraď tím to kodem
Do Until Sheets("Nastavení").Cells(startpodkat, 8) = ""
If Sheets("Nastavení").Cells(startpodkat, 8) <> "-" Then
PodkateroieList.AddItem Sheets("Nastavení").Cells(startpodkat, 8).Value
startpodkat = startpodkat + 1
Else
startpodkat = startpodkat + 1
End If
Loop
Rozdíl je v tom to: Starý kod má až na konci until.... nový na začátku cyklu...
Potřeba přepsat u všech těch to kodu...
Tak trochu připomínáš mě před 4 měsíci
citovat
marficek119(17.11.2010 19:46)#003193 :-) pokud to takto vložím do kódu a upravím sloupec, tak nic. PodKategorie se nenačte
citovat