AL napsal/a:
pokiaľ to excel skutočne berie ako dátum (číslo), a to som si skoro istý, že áno, tak .....
Nojo, Díky. Ten příklad fakt nemůže takhle fungovat.
Cyklus se skončí, když to v oblasti už nenajde tu hodnotu. To s tou adresou tam je na nic.
(Zato to skvěle funguje, kdybych nesmyslně měnil 2 za 2).
To není věc co musím nějak vyřešit, je to příklad, který by asi měl fungovat, ale když si ho z www zkopíruju a pustím, nejde. A chtěl bych zjistit, kde je ta chyba v tomhle kódu.
Ahoj, v nedávném tématu byl odkaz na www microsoft, http://msdn.microsoft.com/en-us/library/office/ff839746.aspx kde je příklad kódu na nahrazení hodnoty v dané oblasti.
Když to zkouším dá mi chybu 91: Object variable or With block variable not set. Je to v cyklu Do -Loop. Kde mám co špatně?
Sub hledej_nahrad()
With Worksheets(1).Range("A1:A20")
Set c = .Find(2, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub
Jen jako inspiraci dám soubor, už nevím odkud ho mám, je tam hledání v podadresářích, dá se zadat název souboru maskou a udělá seznam nalezených.
Na mě ale tak složité, že to nepředělám na tohle zadání.
Možná pomůže tohle téma.
http://wall.cz/index.php?m=topic&id=10709&page=1#post-10713
(nebo zde vyhledat "otevírání excelu")
Pozadí v excelu je jen tapeta na pozadí STRÁNKY, nemůže nijak souviset s vloženými tvary. Pozadí můžu jen vložit nebo pak smazat. Tak to aspoň znám já.
Tudíž platí to z 1.odpovědi, snad jen dodám, že do skupiny jdou přidat i ty spojovací čáry, obrázky, tvary, atd.
Jestli jde jen o excel, ne VBA, tak není potřeba žádná spojovací čára, stačí jen dát tvary do skupiny.
Oba tvary vybrat, pr.tlačítko, skupina, skupina.
V Menu je to při označených tvarech v podmenu Formát, Uspořádat, skupina.
Opičák byl rychlejší, tak jen soubor s řešením. Snad jen poznámka, že další cesta je přes makro v Module, ale to v Initialize Userformu je lepší.
Není to napasované na tvůj kód, je to jen pro inspiraci.
Osekal jsem to ze svého velkého díla, kde se po prvním otevření objeví formulář na vstupní údaje. Kontrola vyplnění je zjednodušená, spojená a bez Msgboxů, jen červený text, který zase zmizí. Po zadání čísel a uložení souboru se po druhém puštění už formulář neobjeví. To jsem měl tak u sebe, nechal jsem to tam, ale ta kontrola Texboxů tam je.
Na obou listech nabídky, snad to bude fungovat.
Ne, to není na 10 řádků. Když je počet volných řádků na listu nabídka menší než počet řádků kopírovaných z nabídka_im, neprovede se.
Mě osobně tam ještě vadí to pevné rozmezí 24-124. Chápu, nebude se třeba měnit, ale já se snažím dělat vše univerzálně, tak aspoň bych ty meze dal jako proměnnou (start, konec apod.) a v kódu místo pevných čísel všude ty proměnné. Pak je změna snadná.
Kontrola místa.
To mé řešení fungovalo na mém testovacím souboru, na tvém opravdu NE.
Něco jsem zkusil, kopíruju celou oblast z listu nabídka_im a upravil jsem to skrytí řádků. Na listu nabídka_im mohou být prázdné řádky mezi daty? Není ošetřené to, když řádků bude moc a na listu Nabídka polezou za 124.
Zkus změnit začátek takhle:
posled = Cells(Rows.Count, "C").End(xlUp).Row
For x = 24 To 124
With Sheets("Nabídka_im")
If .Cells(x, 2) = "" And .Cells(x, 3) = "" And .Cells(x, 8) = "" And .Cells(x, 9) = "" And .Cells(x, 10) = "" And .Cells(x, 11) = "" And .Cells(x, 12) = "" Then Exit For
Cells(posled + x - 23, 2) = .Cells(x, 2)
Cells(posled + x - 23, 3) = .Cells(x, 3)
Cells(posled + x - 23, 8) = .Cells(x, 8)
Cells(posled + x - 23, 9) = .Cells(x, 9)
Cells(posled + x - 23, 10) = .Cells(x, 10)
Cells(posled + x - 23, 11) = .Cells(x, 11)
Cells(posled + x - 23, 12) = .Cells(x, 12)
End With
Nexta pak už asi beze změny.
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.