Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  151 152 153 154 155 156 157 158 159   další » ... 286

Po dlhom skúšaní všetkého možného, som nakoniec chvíľu googloval a narazil som na tento nevysvetliteľný problém u mnohých ďalších nešťastníkov.

1. Vynechajte (na Form to nemá vplyv, iba na list):
Application.EnableEvents = False / True
Application.ScreenUpdating = False / True


2. Vložte toto:
Private Sub ListBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ListBox2.SetFocus
End Sub


Vyskúšajte, vysvetlenie nežiadajte.

PS: Prečo nepokračujete v pôvodnom vlákne?

Hneď prvý odkaz na Googli:
Count unique values in a range with COUNTIF
a
Count unique text values in a range
prispôsobené na Váš príklad.

Je to poriadna pakáren, ten kód :)
Bolo by ho treba prekopať asi celý, okrem toho čo písal Honza53, treba sa pozrieť na používanie Split(), a polí celkovo, znížil by sa počet cyklov, lebo horizontálne pole sa dá spojiť naraz cez Join().
Ale najväčší problém si tam robíte v tom, že predpokladáte rovnako ako v liste, nevykonanie udalosti keď zadáte
Application.EnableEvents = False
Chyba! Toto vo formulári nefunguje. Na to si musíte deklarovať nejaký globálny príznak formulára typu Boolean, ktorý si obhospodárite sami. Teda si vždy pri vyvolaní zmeny prvku najskôr skontrolujte tento príznak, a konajte na základe toho.

Nechce sa mi to terazky celé študovať, prekopávať, keď štúdiom kódu sa nedá vždy presne vydedukovať čo by dotyčný chcel dosiahnuť. Na to by bol potrebný mimo iného príklad konkrétneho správania pri konkrétnych akciách užívateľa a konkrétnych hodnotách vstupov a výstupov. Plus lepší, pochopiteľnejší popis (pochopiteľnejší pre nás, lebo mi vieme, že Vy viete čo chcete, ale my do Vašej hlavy nevidíme, takže pre nás je treba vysvetľovať to inak. Proste ako pre niekoho, kto netuší čo u Vás znamená súprava, prečo sa musí kopírovať kombinácia napr "Ce(Pra)" šesť krát a pod...).

Vložte prílohu. Buď sa zaregistrujte a budete môcť prikladať prílohy (XLSM zabalte do ZIP), alebo upnite prílohu niekde na úložisko. Ak tam máte citlivé dáta, tak ich zmažte alebo prepíšte. Nech nemusíme my vymýšľať zadanie, príklad, aj riešenie.

V tomto prípade je jedno, či zaškrtnete v tom druhom obrázku voľbu "Řadit vše podobné čislu jako číslo" alebo "Řadit čísla a čísla uložená jako text odděleně".

Nemáte tam ani jeden z 2 (vlastne už troch verzií pomocného vzorca) čo sme sem dali.

Neoznačujete celú potrebnú oblasť. Nestačí označiť iba pomocný stĺpec. Musíte označiť všetky dáta, ktoré sa majú "pohnúť". Teda od prvej dátovej bunky v stĺpci J po poslednú dátovú bunku v stĺpci O.

Ale hlavne odpovedzte na tie otázky, či sú tie dáta doťahované do tej tabuľky pomocou vzorcov. Ak áno, ukážte vzorce z J6, K6, L6, M6 (to číslo 6 zamente za Vaše, mi ho nevieme).

-Označte oblasť J6:O21
-Choďte do menu hore, ako som Vám poslal link. Preboha sú tam obrázky, to musíte nájsť. "Data" to bude v preklade "Údaje". "Sort" to bude v preklade "Zoradiť".
-Nabehne Vám okno, ktoré by v Office XP malo vyzerať podobne, ako to na 3. obrázku v linku čo som poslal.
-Máte tam také okno ?
-Urobte Screenshot, a ukážte to okno.
-Ak tam je, tak "Sort by" by mohlo byť preložené ako "zoradiť podľa", a tu vyberiete stĺpec O
-Zadajte ešte "No header row" teda niečo ako "Neobsahuje riadok s hlavičkou" alebo podobný význam má to zaškrtávatko.
-OK
-Máte to zoradené.

EDIT: Ešte ma napadá otázka. Odkiaľ sa v tej tbl berú tie dáta ? Nejakými vzorcami ? Akými presne ? To nebude fungovať. My tu stále predpokladáme, že tam tie dátumy sú fyzicky napísané. Ak sú tam ale doťahované nejakým vzorcom s indexovaným poradím nejakých výsledkov, tak to síce zoradí, ale nič sa opticky nestane, lebo vzorce znovu vypočíta, a tie si znovu natiahnu indexované poradie - pôvodné.

Maticový vzorec (Ctrl+Shift+Enter):
=IF(A2="";"";CHOOSE((MAX(IFERROR(SEARCH(IF($E$2:$E$12="";"žčťžčťžčťžčť";$E$2:$E$12);A2);0))>0)+1;"Nenalezeno";"Hledané slovo nalezeno"))
=KDYŽ(A2="";"";ZVOLIT((MAX(IFERROR(HLEDAT(KDYŽ($E$2:$E$12="";"žčťžčťžčťžčť";$E$2:$E$12);A2);0))>0)+1;"Nenalezeno";"Hledané slovo nalezeno"))

Oblasť slov je v $E$2:$E$12, stačí zmeniť. Vzorec je normálne naťahovací.

Vy potrebujete aby tie namnožené etikety boli zamknuté ? Tak ich na konci makra uzamknite. Dá sa to urobiť tak, že si to na konci vypýta heslo. Rozsah buniek pre zdrojovú etiketu je meniteľný ? Formát, farba, písmo, štýl, rámovanie, a pod sa vždy mení ? Ak nie, môžete predformátovať aj výslednú stránku pre namnoženie. A pod...
Zaregistrujte sa, a priložte prílohu.

https://www.techonthenet.com/excel/filters/sort1.php

To myslíte Vážne, že nemáte menu Údaje a Zoradiť ? Aký máte Excel ?

-A1:A5 máte dátumy
-B1 zadajte jeden zo vzorcov
-potiahnite B1 za jej pravý dolný roh, dole až po B5
-označte A1:B5
-menu Údaje - skupina Zoradiť a filtrovať - tlačítko Zoradiť - položku Zoradiť podľa nastavte na stĺpec B - OK

Nehovorte, že toto Vám nejde. Ak nie, priložte prílohu.

..aby se zkopíroval formátovaný text, ale formát buňky zůstal..

??? Tak tomuto fakt nerozumiem.

Heh, to by som nebol ja : Čo môžem, to si skomplikujem 1
Terazky sa tu tiež piplem s jedným kódom, čo tu mám poznačené, že som chcel dať príklad riešenia v nedávnom vlákne, ale stále iba pridávam zbytočnosti, toto by som tam chel, hento by tam mohlo byť, kód bobtná a zbytočne sa komplikuje, a neviem či sa na to nevyse... nevykašlem.

Naformátovať ako text je určo jednoduchšie a viac User-Friendly.

Skúste si urobiť vedľa pomocný stĺpec so vzorcom:
=MONTH(A1)*1000000+YEAR(A1)*100+DAY(A1)
=MĚSÍC(A1)*1000000+ROK(A1)*100+DEN(A1)

Označiť oba stĺpce - Údaje - Zoradiť - Zoradiť podľa - pomocný stĺpec - Hodnoty - Od najmenšieho po najväčšie

Ja by som to urobil určite cez polia:
Sub VyberKopiruj()
Dim Zdroj(), Ciel(), a As Long, Pocet As Long, PCiel As Long
Const Zaciatok = 5
Const Koniec = 41

Pocet = Koniec - Zaciatok + 1
ReDim Zdroj(1 To Pocet, 1 To 6)

With ActiveSheet
Zdroj = .Cells(Zaciatok, 2).Resize(Pocet, 6).Value2
.Cells(Zaciatok, 10).Resize(Pocet, 4).ClearContents

For a = 1 To Pocet
If Right$(Zdroj(a, 6), 1) = "0" Or Right$(Zdroj(a, 6), 1) = "5" Then
PCiel = PCiel + 1
ReDim Preserve Ciel(1 To 4, 1 To PCiel)
Ciel(1, PCiel) = Zdroj(a, 1): Ciel(2, PCiel) = Zdroj(a, 2)
Ciel(3, PCiel) = Zdroj(a, 5): Ciel(4, PCiel) = Zdroj(a, 6)
End If
Next a

If PCiel > 0 Then .Cells(Zaciatok, 10).Resize(PCiel, 4).Value2 = Application.Transpose(Ciel)
End With
End Sub

A ak nechcete rýchle polia, tak potom určo použite aspoň kopírovanie buniek naraz:
Sub VyberKopiruj2()
Dim a As Long, Oblast As Range
Const Zaciatok = 5
Const Koniec = 41

With ActiveSheet
.Cells(Zaciatok, 10).Resize(Koniec - Zaciatok + 1, 4).ClearContents

For a = Zaciatok To Koniec
If Right$(.Cells(a, 7), 1) = "0" Or Right$(.Cells(a, 7), 1) = "5" Then
If Oblast Is Nothing Then Set Oblast = Union(.Cells(a, 2).Resize(, 2), .Cells(a, 6).Resize(, 2)) Else Set Oblast = Union(Oblast, .Cells(a, 2).Resize(, 2), .Cells(a, 6).Resize(, 2))
End If
Next a

If Not Oblast Is Nothing Then Oblast.Copy: .Cells(Zaciatok, 10).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
.Cells(1, 1).Activate
End With
End Sub


Strana:  1 ... « předchozí  151 152 153 154 155 156 157 158 159   další » ... 286

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