Nic lepšího mě nenapadlo, ale je to funkční.
Možná někdo přijde s jednodušším řešením.
Otestuj.
V souboru jsou dva jednoduché vzorce.
Sloupec se společnými daty můžeš skrýt, nebo ty dva výsledné sloupce označit -> kopírovat -> vložit jinak -> hodnoty.
Poté původní sloučená data odstranit.
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Faktura" Then
Cancel = True
Application.EnableEvents = False
Application.ScreenUpdating = False
With ActiveSheet
With .Range("D62:H64, N9:P9")
.Font.Color = vbWhite
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
End With
.PrintOut
With .Range("D62:H64, N9:P9")
.Font.Color = vbBlack
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
End With
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End Sub
Nula, tedy 0 není to samé jako "0"
Přesně
Tak to vypadá, že se budu muset smířit s diskotékou.
Jediné na co sem přišel je, pokud by se makro spouštělo opakovaně, cílový soubor minimalizovat. Při prvním spuštění "problikne" -> animace minimalizace (nejspíš záležitost OS), při následném spuštění je klid.
Ahoj, diky za reakci.
Přesně takhle to mám napsaný a funkční. Na konci procedury poté oba sešity ukládám.
ThisWorkbook.Save
If CilZavreny = True Then
WbCil.Close True
Else
WbCil.Save
End If
Problém je "pouze z estetického" hlediska pokud dojde na řádek WbCil.Save Přepne se ze zdrojového na cílový soubor a zase zpět.
Ahoj, přicházím si pro radu, protože už mi dochází nápady i trpělivost.
Mám vba kód který přenáší hodnoty mezi dvěma sešity. Pokud je cílový sešit uzavřen, dojde k jeho otevření (přes CreateObject) na pozadí, přenosu hodnot a opětovnému uzavření s uložením (WbKCil.Close True). To vše funguje bez problému.
Ten mi nastává v případě, že by byl cílový soubor otevřen uživatelem před spuštěním makra.
Přiřadím sešit do proměnné, provedu přenos hodnot a pouze uložím (WbkCil.Save), chci nechat soubor otevřený. Přesně v tomto kroku dojde k přepnutí mezi jednotlivými okny excelu a tedy problikávání obrazovky.
Přenos hodnot jako takový funguje, ale ta diskotéka mě irituje, bohužel Application.ScreenUpdating = False nic neřeší.
Máte někdo nápad?
Přiznám se, že se mi vůbec nechtělo to makro nějak extra studovat nebo přepisovat.
Jen sem upravil tvorbu textového řetězce a jeho přeměnu na pole přes fci SPLIT.
Sakra nezaregistroval sem, že to Elnino již vyřešil.
No nic přidám sem svůj pokus o řešení přes Evaluate (Elninova specialitka) .
Má to však menší chybu, je to závislé na jméně listu.
I to by se snad dalo pořešit, ale to již není potřeba. Ber to jen jako ukázku další možnosti, která by se dala využít.
upraveno
Než přijde Elnino s něčím sofistikovanějším
elninoslov napsal/a:
Pre blbca ??? To nemyslíte Vážne! Vy ste práveže šikula. Alebo si tykajme. Nehnevaj sa za katastro-formu ako som to popísal, ale už fakt ponáhľam spať. Takže nekameňovať pls :). Dúfam, že je takto pochopiteľný aj vzorec aj prečo som zmenil to A1 za B1.
Ten vzorec sa dá ešte zjednodušiť vynechaním ISNUMBER a hľadať sa v MATCH nebude TRUE ale nejaké obrovské číslo 9E+307 a tretí parameter bude 1.
EDIT:
@marjankaj : však som aj písal minule, čo mi všetko je, že som chorý Příloha: 49506_vysvetlenie-vzorca.xlsx (16kB, staženo 4x)
elninoslov napsal/a:
To B1 som tam dal naschvál aby To nelákalo meniť aj to $A$1, čo je iba pomoc pre vytvorenie poľa čísiel.
elninoslov napsal/a:
Ak je EAN z 13-ich po sebe idúcich čísel, tak maticový vzorec:
=IFERROR(MID(B1;MATCH(TRUE;ISNUMBER(--MID(SUBSTITUTE(B1;" ";"@");ROW(OFFSET($A$1;;;LEN(B1)-12));13));0);13);"")
=IFERROR(ČÁST(B1;POZVYHLEDAT(PRAVDA;JE.ČISLO(--ČÁST(DOSADIT(B1;" ";"@");ŘÁDEK(POSUN($A$1;;;DÉLKA(B1)-12));13));0);13);"")
Řešením by mohlo být použití regulárního výrazu ve VBA.
Spuštění makra: Karta Zobrazení -> Makra
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.