Já myslím, že to jde obejít.
Uložíš pod novým jménem, tedy vytvoříš duplikát s jiným jménem a ten starý smažeš.
edit. no jo nečtu všechno, Pavlus to tu už napsal
- pokud je v aktualizaei někdo navíc - ignoruje ho
- novou cenu lze zadat do sl. B nebo D (sloupec D má přdnost, tedy pokud je něco ve sl. D, bere cenu ze sl. D, jinak z Béčka
- v AKTUAL a REPORTU nemusí být stejný počet řádků
Já jsem to včera řešil jinak, ale když už tu bylo řešení, nedával jsem to sem, navíc řešení od stalkera mi připadlo velmi elegantní.
Moje řešení je makrem a trochu jinak. Měl jsem za to, že novou cenou budeš přepisovat starou cenu. Ale není problém dát novou cenu do dalšího (žlutého) sloupce. Pak klik na tlačítko a v aktualizaci se ceny přepíší s tím, že změny jsou označeny. Pokud chceš můžu to sem dát. Na počtu položek nezáleží.
takhle třeba ...
Musíš to tomu formuláři nějak sdělit. Např tak, že v kodu bude napsáno:
př. (pouze nefunkční ukázka z kodu)
With UserForm1
.Label10.Caption = wd.Cells(lin, 5)
.Label12.Caption = wd.Cells(lin, 6)
.Label13.Caption = wd.Cells(lin, 27)
end with
Odkrokuj a zjistíš kde to zlobí. Předpokládám, že .Find, ale bez nějakých dat se špatně hledá, alespoň mě.
ActiveWorkbook.SaveAs Filename:=adresar & jmeno_sešitu & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=True
samozřejmě někde nejprve zadáš nebo načteš nějaký adresář, kam s tím a nějaké nové jméno sešitu.
pokud máš propojení s jiným sešitem, bude to bez ošetření zlobit
třeba tak (ale je více možností)
Důležité je, aby položky měly naprosto stejný identifikátor - nějaký.
a/ buď jsou v obou souborech na stejném místě nebo
b/ jsou jinde, ale mají naprosto stejný název
c/ jsou jinde, mají jiný název ale mají třeba nějaké číslo
pak není problém porovnat, přepsat, aktualizovat, ale je třeba poslat nějaký report a nějakou aktualizaci tedy vzor.
teď jde o to, jak chceš zadávat řádek, jestli automaticky, stále na nový níž a níž nebo jak?
Sub prvni_volny_radek()
Dim poslRadek As Long
On Error Resume Next
Rem pokud je sl. prázdný hodí err, proto tolerance chyby
poslRadek = Columns(1).Find("*", , , , xlByRows, xlPrevious).Row
Sheets("List2").Range("A" & poslRadek + 1).Value = Sheets("List1").Range("A1").Value
End Sub
tohle je příklad jak to jde - (jeden z mnohých)
vyzkoušej si na list1 napiš do A1 něco a spusť makro, bude psát pořád níž a níž.
a nebo tak
Takhle jsem to pochopil já, i když mi to trvalo. Asi to samé jako ji02.., ale pouze vzorcem.
Pavlus byls rychlejší - platím pivo.
Přesunout jak?
jednu a jednou?
- dej kurzor do cílové buňky
- napiš =
- pak klikni do zdrojové buňky .... hotovo
makrem ?
Sub presun ()
Sheets("druhý list").Cells(A,B)= Sheets("první list".Cells(AA,BB)
End Sub
kde A nebo AA = číslo řádku
B nebo BB = číslo sloupce
nebo Copy a PasteSpecial atd. atd
nebo též "ručně" Ctrl C a vložit jinak / hodnoty
do všech vzorců dopiš ;0
=KDYŽ(L9>0;SVYHLEDAT(L9;Data!$A$2:$AD$195;1;0);"-")
0 = vyhledá přesnou hodnotu
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.