asi by o chtelo nejaky vzorek, takto jsem se ve vasem textu ztratil uz pri patem vyskytu slova 'data'...
tenhle dotaz jsem vubec nepochopil - muzete me jeste trosku postrcit...?
To mate pravdu, pokud ale maji byt soubory zavrene, zbyva uz asi jen procedura VBA
Zkuste se podivat na funkci NEPŘÍMÝ.ODKAZ
Na to bude stacit jednoduchy msgbox a rozhodovaci prikaz Select Case
Pokud uzivatel zvoli Ano, tak se zavola tisk formulare a nasledne procedura k ulozeni dat,
pokud zvoli NE, tak se zavola jen procedura k ulozeni dat.
Tu proceduru budete pravdepodobne muset zapsat do samostatneho modulu (nikoliv pod click ve formulari)
Application.Getsaveasfilename - neulozi, jenom ti ziska uplny nazev souboru od uzivatele, pak si ho musis ulozit sam, cele by to mohlo vypadat takto:Sub UlozitVydejku()
Dim File_name As Variant
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Sheets("výdejka")
.Cells.Copy
End With
Workbooks.Add
ActiveSheet.Paste
ActiveWindow.DisplayGridlines = False
Application.CutCopyMode = False
ActiveSheet.Name = "výdejka"
Sheets("list2").Delete
Sheets("list3").Delete
Range("A1").Select
Application.DisplayAlerts = True
File_name = Application.GetSaveAsFilename(FileFilter:="Excel 2003,*.xls,Excel 2007,*.xlsx,All Files,*.*", Title:="Save As File Name")
If File_name = False Then Exit Sub
ActiveWorkbook.SaveAs File_name
Application.ScreenUpdating = True
ActiveWorkbook.Close savechanges:=False
End Sub
Tak ted nevim, jestli jsi to pochopil spravne.
Tento zapis: Worksheets(1) znamena, ze jde o list, ktery je 1. v poradi v sesite (pokud tedy pretahnes uplne doleva jiny list, bude jedna o jiny list)
Zkratka: List1 nemusí byt to stejne jako Worksheets(1)
To 'List1' je oznaceni listu, ktere se nemeni pri zadne akci (ani pri odstraneni listu, pokud List1 odstranis, uz se tak zadny list v sesitu nikdy oznacovat nebude)
Zkuste tohle - vse by melo zajistit stisknuti jiz znameho tlacitka...
Pridal bych si pomocny sloupec 'C-B' (protoze do autom.filtru nelze zapsat vzorec (aspon myslim, ze ne)) a pak bych filtroval podle pomocneho vzorce jen zaporne hodnoty...
Slo by to nejak takhle.
Primo v listu DB jsem pridal prvni radek, kde se ve sloupcich s castmi produktu daji vybrat (pomoci overeni dat) jednotlive casti a k nim se pomoci vzorce SVYHLEDAT prirazuje cena, ktera se nasledne spocita.
Nejake upravy lze udelat, ale myslim, ze po prostudovani principu, jakym je to udelano, to bude jasne
Tohle cislo listu muzes zjistit ve VBE, v seznamu listu najdes:
List2 (jmena)
List4 (Data)
List5 (vystup)
V zavorkach jsou jmena listů a ta cisla jsou ta, ktera hledas (ty cisla nezavisi na poradi v listu - klidne muze byt v sesitu prvni list 'Vystup'), takze List5 je vlastne 'Vystup' a sheets(1) muze byt take 'Vystup')
nevim, jak to resil Krapl, ale lze pouzit vzorec do bunky B2:
=KDYŽ(JE.CHYBHODN(SVYHLEDAT(HODNOTA(ZLEVA(A2;3));List2!$A$1:$B$13;2;0))=PRAVDA;"";SVYHLEDAT(HODNOTA(ZLEVA(A2;3));List2!$A$1:$B$13;2;0))
...a ten protahnout dolu...
Kdyby byla k dispozici nejaka ukazka, bylo by to urcite lepsi, protoze si sice muzu neco predstavit, ale nikdy to neni ono.
Postaci vzorek dat s fiktivnimi cenami (a samozrejme ani nazvy casti produktu nemuseji odpovidat praxi).
Diky
tuto vlastnost muzete nastavit kdykoliv, v jakemkoliv kodu, takze pokud bude vase podminka splnena, bude se prepocitavat automaticky.
A ano, lze ji nastavit i v procedurach ThisWorkbook.
Jen nezapomente, ze si tuto vlastnost sesit podrzi a po ulozeni bude v sesite nastaven po jeho dalsim otevreni.
Ve VBA lze nastavit, jestli se ma sesit prepocitavat:
1) automaticky(Application.Calculation = xlAutomatic),
2) poloautomaticky=s vyjimakou dat v tabulkach (Application.Calculation = xlSemiautomatic) nebo
3) rucne (Application.Calculation = xlManual).
Otazkou je, jak urcite, kdy chcete jakou vlastnost sesitu vyuzit...a to bude asi ten nejvetsi problem
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.