< návrat zpět

MS Excel


Téma: Skrývanie riadkov rss

Zaslal/a 18.9.2013 14:31

Zdravím,
potreboval by som nejakym sposobom, najlepsie cez tlacitko (asi, alebo aj inak) skryt niektore riadky, v ktorých je urcite slovo
napr. kliknutim na tlacitku sa skryju vsetky riadky, v ktorych je napisane slovo "auto" (v niektorej bunke riadku)
avsak potrebujem aby to fungovalo aj spatne, aby som si ich mohol aj odkryt a pozriet...
predstavujem si to tak ze by som mal dve tlacitka, jedno na skrytie nepotrebnych riadkov, druhe na ich odkrytie, pripadne aj jedno tlacitko ktore by fungovalo raz na skrytie a raz na odkrytie...

stop Uzamčeno - nelze přidávat nové příspěvky.

Strana:  « předchozí  1 2 3   další »
#015312
avatar
fajn...
a teraz pripomeniem ze som zaciatocnik a potreboval by som vediet ktore tlacitko to byt (ci Ovladacie prvky formulara, alebo Ovladacie prvky ActiveX) a ako mam spojit to tlacitko s makrom...
tym vsetkym veciam co ste tu popisali mozno budem chapat neskor:)
to ste sa kde vsetko naucili?
neviete mi poradit nejaku dobru knihu na excel, alebo nieco take...citovat
#015315
avatar
Static89: co mozem vrelo doporucit tak to je visual basic 2010 krok za krokom :) je to pisane pre uplneho lajika .... tak isto odporucam visual c# 2010 krok za krokom .... ta je asi 2x lepsia ako basic ... ale to je zas iny programovaci jazyk :))) aj ked maju isty kompilator maju inu syntaxu.

jedina nevyhoda tej knihy je ta ze sa orientuje na vyvoj aplikacie .... nie priamo na excel .... ale zas nadruhu stranu ked pochopite tu knihu tak vam nebude robit problem nejake makra, addins, com atd.

Al: napodobne aj ja koli tomuto navstevujem toto forum :)citovat
icon #015318
Poki
No, no, je to trosku offtopic, ale snad nam Statik89 odpusti.
Ja uz jen odpovim na eLCHovu reakci.

1) souhlasim, vracet do puvodniho stavu je dobre (nejenom u screenupdating, ale i u ostatnich) - takze beru COUNTIF je lepsi
2) obecne UsedRange (dle mych zkusenosti) daleko rizikovejsi nez .end(xlup)
3) rozhodne nesouhlasim - pri pouziti For Next se zjistuje jen jedna vlastnost (a to tak, o kterou ci v kodu reknete), u For Each se zjistuji vsechny pro kazdem Stepu v cyklu. Nicmene spojeni bunek do oblasti a pouze jedno skryti ma svuj puvab...
Díky všem, rekl bych, ze jsem opet o trosku chytrejsi 9citovat
#015324
avatar
statik89: je jedno aky prvok na tlacitko pouzijete

tu som hodil ako priklad obidve:
Příloha: zip15324_novy-objekt-microsoft-excel-worksheet.zip (18kB, staženo 27x)
citovat
#015327
avatar
A musí to skryť aj druhý riadok hoci tam nie je "SKRYŤ!!!" ?citovat
#015328
Opičák
MUSÍ protože v B2 máte bílým písmem napsáno SKRYŤ.
A když SKRYŤ, tak SKRYŤ !!! 9 9 9

EDIT: Ale to je tam využité k "odhalení" stavu skryné ano či ne. Takže bez toho to v tomto případě nefunguje a musel by se upravit kod.citovat
#015329
Opičák
třeba takto:
kód od POKIho

Sub Skryt()
Dim i As Long, r As Long

If Worksheets("Hárok1").cmbSKRYT.Caption = "zobraziť" Then
Rows.Hidden = False
Worksheets("Hárok1").cmbSKRYT.Caption = "skryť"
Exit Sub
End If

For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
r = 0
On Error Resume Next
r = Rows(i).Find(what:="SKRYŤ!!!", lookat:=xlWhole, LookIn:=xlValues).Row
If Err.Number = 91 Then
GoTo dalsi
End If
Rows(i).Hidden = True
On Error GoTo 0
dalsi:
Next i

Worksheets("Hárok1").cmbSKRYT.Caption = "zobraziť"
End Sub


pak můžete vymazat SKRYT v B.citovat
icon #015342
eLCHa
@Poki
Ještě trochu OT ad 3
Taxem to ze zvědavosti zkusil
V listu jsem vyplnil všechny buňky ve sloupci 1 číslem (1 mil hodnot)
a spustil jsem následující kód
Sub test()
Application.ScreenUpdating = False
Dim time1
Dim I As Long
time1 = Now
For I = 1 To Rows.Count
Cells(I, 1).Value = Cells(I, 1).Value + 1
Next I
time1 = Now - time1

Dim time2
Dim r As Range
time2 = Now
For Each r In Columns(1).Rows
r.Value = r.Value + 1
Next r
time2 = Now - time2
Application.ScreenUpdating = True

Debug.Print "For Next - " & CDate(time1), "For Each Next - " & CDate(time2)
End Sub


výsledkem je
For Next - 0:00:43
For Each Next - 0:00:34citovat
icon #015343
eLCHa
Po následující úpravě
Sub test()
Application.ScreenUpdating = False
Dim time1
Dim I As Long
time1 = Now
For I = 1 To Rows.Count
Cells(I, 1).Value = Cells(I, 1).Value + 1
Cells(I, 1).Value = Cells(I, 1).Value + 1
Cells(I, 1).Value = Cells(I, 1).Value + 1
Cells(I, 1).Value = Cells(I, 1).Value + 1
Cells(I, 1).Value = Cells(I, 1).Value + 1
Cells(I, 1).Value = Cells(I, 1).Value + 1
Cells(I, 1).Value = Cells(I, 1).Value + 1
Cells(I, 1).Value = Cells(I, 1).Value + 1
Cells(I, 1).Value = Cells(I, 1).Value + 1
Cells(I, 1).Value = Cells(I, 1).Value + 1
Next I
time1 = Now - time1

Dim time2
Dim r As Range
time2 = Now
For Each r In Columns(1).Rows
r.Value = r.Value + 1
r.Value = r.Value + 1
r.Value = r.Value + 1
r.Value = r.Value + 1
r.Value = r.Value + 1
r.Value = r.Value + 1
r.Value = r.Value + 1
r.Value = r.Value + 1
r.Value = r.Value + 1
r.Value = r.Value + 1
Next r
time2 = Now - time2
Application.ScreenUpdating = True

Debug.Print "For Next - " & CDate(time1), "For Each Next - " & CDate(time2)
End Sub


je to dokonce
For Next - 0:08:30
For Each Next - 0:05:25

V prvním případě 11 sekund, tady bych čekal 10x11 = 2 minuty, ale jsou to 3
Podle mne (neověřená spekulace) je to proto, že For Each ví s čím chceme pracovat, kdežto For neví, že Cells(I,1) je pokaždé ta samá buňka a musí ji vždy znovu hledatcitovat
icon #015344
eLCHa
Btw a tím už opravdu končím
Ani With nepomohlo (a to mě překvapilo - ikdyž je možné, že by se to projevilo při těch 10ti příkazech, ale to už zkoušet nebudu)

Sub test()
Application.ScreenUpdating = False
Dim time1
Dim I As Long
time1 = Now
For I = 1 To Rows.Count
With Cells(I, 1)
.Value = .Value + 1
End With
Next I
time1 = Now - time1
Application.ScreenUpdating = True

Debug.Print "For Next - " & CDate(time1)
End Sub

For Next - 0:00:43citovat

Strana:  « předchozí  1 2 3   další »

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

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.

On-line nástroje