Ahoj,
existuje nějaký rychlejší způsob, jak zaokrouhlit částky ve sloupci na dvě desetinná místa? Ve formátu buňky mám nastaveny 2 desetinná místa, nicméně excel počítá s číslem přesným tzn. včetně tisícin, desetitisícin apod.
jedná se mi v uvedeném příkladu o oblast D10:D200 s tím, že se mouhou vyskytovat prázdné řádky. Pro moje potřeby bude ve finále daná oblast dynamická, to už si ale ošetřím sám.
Jen mi to zaokrouhlení buňky po buňce přijde dost zdlouhavé. Neexistuje něco jako ROUND((Range"D10:D200),2)?
Private Sub CommandButton1_Click()
For Each cell In [D10:D200]
If cell = "" Then
cell.Value = ""
Else
cell.Value = WorksheetFunction.Round(cell.Value, 2)
End If
Next cell
End Sub
Ahoj,
rád bych měl v každém sešitu excelu standardní tlačítko pro změnu čísla na měnu. Po kliknutí na toto tlačítko by se změnilo číslo na měnu ve formátu "číslo" € (např. 4,55 => click => 4,55 €). Analogicky si pak udělám tlačítko na změnu měny na CZK, případně zpátky na obecné číslo.
Vlastní tlačítko na pásu karet vytvořím, ale jek správně přiřadit makro netuším. Zkoušel jsem je dávat do modulu, uložit, ale bohužel rozbalovací menu s makry dostupnými pro přiřazení je stále prázdné.
Může mě prosím někdo nakopnout? Díval jsem se na postup, který mi před časem vytvořil elnino v tématu "Hypertextový odkaz v outlooku", ale zřejmě se zprovoznění v excelu od outlooku poněkud liší.
Private Sub mena()
Selection.NumberFormat = "#,##0.00 [$€]"
End Sub
Dobrý den,
V příloze mám ukázkový příklad, ve kterém pomocí cells kopíruji konkrétní (jednotlivé) buňky. Je možné definovat resp kopírovat oblast buněk pomocí cells?
defakto potřebuji např. zápis
Worksheets("List2").Range("B7:D21") = Worksheets("List1").Range("B9:D23") nahradit zápisem pomocí cells, jelikož využívám cyklus DO WHILE a potřebuji se v případě neprázdné buňky posunout o 5 sloupců vpravo.
Napadá mě kopírovat každou buňku separátně, což znamená dalších 45 řádků kódu, ale možná to jde nějakou jednodušší cestou?
Logika kopírování je doufám pochopitelná z přílohy (pokud je pole B2 Listu 2 prázdné, uloží se data z Listu1 po kliknutí na tlačítko data do první tabulky na Listu2, pokud prázdné není, testuje se obsazenost pole G2 atd.)
Za postřehy děkuji
Miroslav
Díky moc, funguje skvěle. Existenci daného adresáře si ošetřím. Co se týče existence souboru o stejném názvu, nabídne excel sám možnost přepisu stávajícího souboru.
Problem solved
ještě jednou díky
Dobrý den,
poradí prosím někdo, jakým způsobem uložit více listů do samostatného souboru?
Uložit celý sešit do nového souboru není problém (viz příloha), ale nevím si rady s uložením vybraných listů (např. list "faktura" a "doprava"). Případné vzorce by měly zůstat zachovány, nechci kopírovat jen hodnoty.
Příkazem Sheets(Array("faktura", "doprava")).Copy jsem schopen vytvořit nový soubor pouze s těmito listy, ale bohužel jsem nepřišel na to, jak tento nový soubor uložit (název by měl být vytvořen stejným způsobem, jak je uvedeno v příloze tzn. název "sample_" + text z buňky A1 na listu faktura).
Díky moc
Miroslav
Odzkoušeno, funguje skvěle.
Jen nevím, jak je bezpečné mít v outlooku povolena všechna makra. Předpokládám, že záleží jako vždy na edukaci uživatele.
Každopádně děkuji mockrát.
Dobrý den,
Je prosím možné v Outlooku nadefinovat vlastní tlačítko, po jehož odkliknutí by se spustilo makro, které by ze zadané cesty ke konkrétnímu souboru automaticky vytvořilo hypertextový odkaz k tomuto konkrétnímu souboru?
V příloze je názorná grafika, jak by to mělo fungovat.
Díky moc
To je přesně ono, geniální! :-)
díky moc
Asi jsem to popsal poněkud nešťastně.
@ JoKe: takhle to právě nechci, uvádím to i v tom svém prvním kódu
@ elninoslov: chci vždy natvrdo kopírovat konkrétní listy, v uvedeném příkladu leden a únor (když bude checkbox zaškrtnutý) a duben, když zaškrtnutý nebude.
chci se vyhnout řešení pomocí:
ThisWorkbook.Worksheets(Array("leden", "unor")).Copy
Když ten svůj dotaz zjednoduším, tak potřebuji do proměnné rozsah nacpat názvy dvou listů (leden a unor), a to se mi právě nedaří. Prostě něco ve smyslu:
rozsah = "leden", "unor"
aby mi pak fungovalo níže uvedené makro pro leden a unor (při zaškrtnutém checkboxu). V makru mám záměrně nyní jen leden pro ilustraci, že makro pro kopírování samostatných listů funguje. Jen místo leden bych tam chtěl dostat leden a unor. Jde to vůbec tímto způsobem?
Pevně doufám, že už je to srozumitelné.
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
rozsah = "leden"
Else
rozsah = "duben"
End If
ThisWorkbook.Worksheets(Array(rozsah)).Copy
End Sub
Dobrý večer,
mám jednoduché makro, které kopíruje buď list "leden" nebo list "duben" podle toho, zda je zaškrtnuto zaškrtávací políčko. Nyní bych chtěl docílit toho, aby se při zaškrtnutém políčku ze sešitu zkopírovaly dva listy "leden" a "unor".
Samozřejmě bych to mohl udělat jednoduše, ale to nechci, jelikož to hodlám napasovat do kódu, který je už sám o sobě velmi dlouhý, je v něm několik větvení atd. Tímto dalším zapodmínkováním bych ho defakto ještě zdvojnásobil.
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
ThisWorkbook.Worksheets(Array("leden", "unor")).Copy
Else
ThisWorkbook.Worksheets(Array("duben")).Copy
End If
End Sub
Rád bych to udělal následujícím způsobem, který pro samostatné listy funguje. Nevím, jak rozšířit rozsah o další list "unor". Zkoušel jsem několik zápisů, ale bezvýsledně. Lze to tímto způsobem vůbec provést?
Snad jsem to popsal srozumitelně.
Za postřehy děkuji
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
rozsah = "leden"
Else
rozsah = "duben"
End If
ThisWorkbook.Worksheets(Array(rozsah)).Copy
End Sub
Dobrý den,
řešení od opičáka defakto ukládá do log souboru veškeré otevření souboru (i bez jakékoli editace). Poradí někdo prosím, jak to udělat, aby se do logu zapisovaly jen údaje (čas + datum + jméno příslušného uživatele) pouze v případě skutečné editace?
díky za feedback
Pomohl by mi to prosím někdo trochu ozřejmit?
rozumím tomu zhruba takhle:
-Jedná se o událostní proceduru, která se spouští při každé změně příslušného listu.
-Proměnné rng je přiřazeno pole A1:F10
- pokud neexistuje průnik mezi "Target" a rng, bude formátování smazáno (zde netuším, co je to target resp co obsahuje target... beru to logicky jako test, zda je označená buňka v uvedeném poli prázdná. Mohl by mi někdo blíže vysvětlit ten target (je to proměnná? jak se plní hodnotami? jak funguje?)
- rng.FormatConditions(1) ta jednička na konci v závorce funguje jako else k podmínce If (If Not Intersect(Target, rng) Is Nothing Then)? Jedná se jen o nějaký zjednodušený zápis?
díky moc
Díky za váš čas pánové. Jak píše Zbygi, tak mi řešení od JoKe taky nefunguje. Zbygiho řešení funguje, ale našel jsem ještě jedno řešení, které funguje ještě lépe.
Není to bohužel z mé hlavy a upřímně řečeno, úplně do detailu tomu kódu nerozumím.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("A1:F10")
If Not Intersect(Target, rng) Is Nothing Then
With rng.FormatConditions
.Delete
.Add xlNoBlanksCondition
End With
With rng.FormatConditions(1)
.Borders.LineStyle = xlContinuous
With .Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
End With
End If
End Sub
Pánové děkuji za pomoc. Řešení od JoKE je super a defakto dělá to, co od toho čekám. Jediné co chybí je to ohraničení.
Jak jsem psal v jednom z mých předchozích příspěvků, dokážu první problém vyřešit pomocí referenční buňky.
Nyní mi šlo již jen o to ohraničení, aby u sloučených buněk bylo kolem dokola.
@JoKe
tím to bohužel není... i když prvně smažu obsah sloučené buňky a teprve potom ji rozdělím, zůstane podmíněné formátování zachováno jen v buňce, která byla ve sloučené buňce úplně vlevo (v ostatních buňkách bohužel ne).
@marjankaj
přikládám screeny, jak se mi to Vaše řešení chová
Podmíněné formátování po kliknutí na "sloučit buňky" nefunguje bohužel nikde (do buněk samozřejmě píšu nějaký text, abych ověřil funkčnost formátování - nefunguje )
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.