Příspěvky uživatele


< návrat zpět

Strana:  « předchozí  1 2 3 4 5 6 7 8 9   další » ... 16

Aby fungovala makra, musí být sešit otevřen v aplikaci, nikoliv ve webovém prohlížeči.
Z vlastní zkušenosti však takovéto sdílení s použitím maker moc nedoporučuji, protože ani při průběžném ukládání sešitu po provedené změně není zaručeno, že se všechny položky uloží správně a nedojde ke ztrátě dat. Vše závisí na rychlosti SDP (sdíleného diskového prostoru), což se mi na OneDrivu moc neosvědčilo a pokud v jeden okamžik zapisuje více uživatelů nelze 100% zabezpečit uložení všech dat.

Sdílení přes webové rozhraní má také svoje nevýhody, jako je např. přepsání dat jiným uživatelem, pokud si uživatel nevšimne, že v buňce již něco zapisuje jiný uživatel. Zde platí kdo poslední přijde ten vyhraje.

Asi jsem BFU, ale tohle sdílení se nejmenované firmě zřejmě moc nepovedlo, nebo netuším co tím sdílení dat autoři mysleli. Pokud to má být jen pro čtení, pak je to OK, ale ...

Osobně takovou nutnost sdílení řeším jedním souborem, který obsahuje pouze obslužné rutiny (makra) a druhým souborem s daty. Obslužný soubor pak ukládá data do zmíněného datového souboru, který není běžně uživatelům přístupný a je zabezpečeno, že v jeden okamžik do něj zapisuje pouze jeden uživatel.

Jaké položky jsou jedinečné, co se má sčítat a podle jakého kritéria?
sumif
https://support.microsoft.com/cs-cz/office/sumif-funkce-169b8c99-c05c-4483-a712-1697a653039b
sumifs
https://support.microsoft.com/cs-cz/office/sumifs-funkce-c9e748f5-7ea7-455d-9406-611cebce642b

Ukázka by nebyla?

Další možností je použít
Worksheets("jmenoListu").Protect password:="heslo", UserInterfaceOnly:=True

List bude uzamčen pro uživatele, ale makra do něj mohou zapisovat bez nutnosti jej odmknout.
https://learn.microsoft.com/en-us/office/vba/api/excel.worksheet.protect

https://wall.cz/index.php?m=topic&id=55933&page=1#post-55936

Možné řešení:
v buňce A1 je uvedená cesta k souboru, do buňky B1 se uloží název bez přípony.
Sub JmenoBezPripony
Dim aJmeno
Dim jmenoSouboru As String, jmeno As String

jmenoSouboru = Range("A1")
aJmeno = Split(jmenoSouboru, ".", , vbTextCompare)

jmeno = Replace(jmenoSouboru, "." & aJmeno(UBound(aJmeno)), "", , , vbTextCompare)

Range("B1")=jmeno

End Sub

Máte na mysli toto?

Jasné, to mi bohužel došlo, když už jsem to odeslal.

V mém případě ani není nutné mít pomocný sloupec, protože různá data zpracovávám pokaždé jinak seřazená, ale to není podstatné.

Díky za cenné rady a řešení.
I před důchodem se člověk stále učí .. 5

EDIT:
to elninoslov
možná bych doplnil With .Sort
.SortFields.Add2 Key:=rng, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

With .Sort
. SortFields.Clear
.SortFields.Add2 Key:=rng, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

aby se nekumulovaly jednotlivé úrovně filtru každým spuštěním

Seřazení dat byla taky jedna z možností nad kterými jsem uvažoval. Jedno jestli vymazavana oblast bude na konci nebo začátku, hlavně že bude spojitá.

Díky, to jsou právě ty obavy z vysoké stability a spolehlivosti MSO.

Pokusím se upravit pro variabilní oblast dat.

Dobrý den,
pro výmaz nevyhovujících záznamů využívám metodu mazání dat pomocí SpecialCells. Pro řádově 1000 řádků to je obstojná rychlost výmazu, ale při počtech záznamů v řádu desítek a stovek tisíc je to pomalé.

Existuje jiný, efektivní, způsob výmazu velkého množství dat.

Současný kód výmazu:
Sub VymazNepotrebne()
Dim rng As Range
Set rng = Range("D2:D" & Cells(Rows.Count, 1).End(xlUp).Row)
With rng
.Formula = "=IF(A2=1,0,0/0)"
On Error Resume Next
.Cells.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
.Clear
On Error GoTo 0
End With
Set rng = Nothing
End Sub

A čemu se má uvedený výraz rovnat?

Pokud výraz bude logickou hodnotou, pak bude podmínkou vyhodnocen.

Podle popisu výše to určitě nebude logická hodnota.

Doporučuji deklarovat proměnné a určit jejich datové typy.

bobika99 napsal/a:

dotaz = "(.Cells(5, 2).Value Like "020319??00" Or .Cells(5, 2).Value Like "0203??0000" Or .Cells(5, 2).Value Like "02??000000")"
Proměnná dotaz není logickou hodnotou.

dotaz = .Cells(5, 2).Value Like "020319??00" Or .Cells(5, 2).Value Like "0203??0000" Or .Cells(5, 2).Value Like "02??000000"

Jak jsem již uvedl, podmínka musí být logická

dotaz="5 + 5 = 10"
If dotaz = "5 + 5 = 10" then
' správně
Else
' špatně
End If
Jinak už nevím jak to srozumitelněji napsat.

bobika99 napsal/a:

...ve skutečnosti tam je poskládaná podmínka...
ale proměnná dotaz je textová, podle přikladu.

A co se má vyhodnotit jako správná podmínka?
Podmínka se vyhodnocuje jako logická hodnota, tedy pokud DOTAZ je definován jako "5 + 5 = 10" (to je textová hodnota) musí se s něčím porovnat.
If dotaz = "5 + 5 = 10" then
' správně
Else
' špatně
End If

A1 je buňka, A je sloupec, 1 je řádek

možné řešení v příloze

PavelJanec napsal/a:

...Porovnání bude podle názvu sloupců...

Znamená to tedy, že název sloupce bude v řádku 1?

Názvy sloupců jsou standardní podle typu odkazu (A1 vs R1C1) a jsou to buď písmena nebo čísla.

Interior.ColorIndexhttps://learn.microsoft.com/cs-cz/office/vba/api/excel.interior.colorindex


Strana:  « předchozí  1 2 3 4 5 6 7 8 9   další » ... 16

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse