Napadlo mě předělat UDF funkci na odstranění diakritiky.
Výsledek v příloze.
Myslel si to takto: ???
Private Sub Workbook_Open()
Dim MaxRadek As Long
With List1
MaxRadek = .Cells(Rows.Count, "A").End(xlUp).Row
.Cells.FormatConditions.Delete
With .Range("A2:A" & MaxRadek & "").FormatConditions.Add(Type:=xlExpression, Formula1:="=$A2=1")
.Font.ColorIndex = 33
.Interior.ColorIndex = 6
End With
End With
End Sub
Třeba takto.
Předělal sem vymazávání řádků.
Nyní se mažou všechny až na konci makra.
Teoreticky by se měl průběh zrychlit.
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
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.