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.
Něco jsem zkoušel, ten zápis
OldPointer = Application.Cursor
mi podle mě funguje, když předtím sám nastavím nějaký kurzor.
Ale po spuštění makra např.dlouhého cyklu, kdy uprostřed zjistím a Msgbox vypíšu typ kurzoru, mám vždycky default.
A taky se podle toho Excel chová: mám "kříž"-select. Pustím makro, default-šipka. Msgbox vypíše -4143 a teprve pak vidím "hodiny"-čekání. Po Ok je zase kříž.
Obávám se, že tady neporadím.
Nevím, jestli to chápu správně.
Application.Cursor mi vrací číslo, různé podle typu kurzoru. Tím číslem se zase dá kurzor zase nastavit.
A v tom kusu kódu je na konci xlDefault. Tak to celé končí s default kurzorem. Co je špatně?
xlDefault = -4143, xlWait = 2, atd.
To bude asi: Vzorce...Definované názvy...Správce názvů. Noční směna?
V mém excelu, i když se tváří jako český, líp funguje:
Range("Q54").FormulaR1C1 = "=TODAY()"
Z předchozího zachováno jméno v A1, list2.
Pro Userform napsat kód:
Private Sub UserForm_Initialize()
UserForm1.CommandButton1.Caption = Worksheets("List2").Range("A1").Text
End SubPo zobrazení "UserForm1.Show" by tam ten název měl být.
Pokud je to ActiveX. Tlačítko na List1, jméno v buňce A1 na List2, někde v makru řádek:
Worksheets("List1").CommandButton1.Caption = Worksheets("List2").Range("A1").Text
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.