< návrat zpět

MS Excel


Téma: skrytí vybraných řádků na základě podmínky rss

Zaslal/a 2.2.2014 0:59

Ahoj můžete mi prosím pomoct s makrem, které by sledovalo tři konkrétní buňky např A10:A12 a při změně v nich by se spustilo.

Makro bude skrývat buť řádek 10 nebo 11 nebo 12 na základě toho která z buněk A10:A12 bude prázdná. Pokud bude A10 něco obsahovat bude 10 řádek vidět a tak analogicky u všech tří.

Všem moc děkuji za pomoc.

Ještě jedna otázka nazávěr. Šlo by udělat, aby to makro pracovalo asi na 20-30 listech. Jde nějak hromadně určit pro které listy má to makro platit i s tou automatickou kontrolou změn v buňkách?

Je tu spousta odborníků a já jsem VBA lama tak prosím o radu. 1

Zaslat odpověď >

Strana:  1 2 3 4 5   další »
#017643
Opičák
To aby se řádek skryl není problém, když z něj , resp. z nějaké buňky odstraníš NĚCO, ale co dál ? Aby se "zjevil", když uděláš co? Dopíšeš něco kam? Ono není kam dopsat, když je řádek fuč.citovat
#017644
avatar

Opičák napsal/a:

To aby se řádek skryl není problém, když z něj , resp. z nějaké buňky odstraníš NĚCO, ale co dál ? Aby se "zjevil", když uděláš co? Dopíšeš něco kam? Ono není kam dopsat, když je řádek fuč.


v těch třech buňkách je vzorec na datum takže já na prvním listě zadám že je únor 2014 a na listě dva, tři, čtyři, ... se mi objeví ve sloupci A datumy od 1.2.2014 až po 28.2.214 a mě jde právě o poslední tři buňky které jsou proměnlivé v závislosti na měsíci a roce. někdy je poslední den 28 takže potřebuji skrýt řádky kde by jinak bylo 29, 30, 31 vzorec je nechá prázdné. no a když se v tom řádku objeví číslo dne tak se opět zobrazí. Takže příklad dvě měsíc má 30 dní tudíž poslední buňka bude prázdná a tu potřebuji skrýt. A chci aby to reagovalo pouze na změny v těch třech buňkách aby se nespouštělo makro pokaždé když dojde ke změně na listu ale jen když se změní hodnota data v těch třech buňkách.citovat
#017645
avatar
tak makro už mám teď už jen potřebuji aby se spustilo pokud ručně změním hodnotu v buňce B1 na Listu2
funguje mi to jak má pokud mám B1 v aktuální listu ale nevím jak mám zapsat že při změně hodnoty buňky B1 v listu2

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
Call Vymaz
End If
End Subcitovat
#017649
avatar
Zatím má toto. Ale nepracuje to úplně jak chci. změna čísla v listu "vzorce" na hodnotu 1, 2 nebo 3 změní čísla v řádcích 1 , 2 , 3 sloupce A

nastavím li v listu vzorce čílo na 2 list1 mi ukáže 1, 2
ve sloupci A a 3 potřebuji skrýt. Aby se tak stalo musím změnit hodnotu v buňce b5 na listu1. Já potřebuju aby se to stalo hned při změně hodnoty ve vzorce!B2
Příloha: rar17649_pokus.rar (14kB, staženo 45x)
citovat
#017671
avatar
target.adrees = buňka v jiném lisu prosím o pomoc. Odzkoušel jsem vše co mě napadlo a nic nejede :(.citovat
#017672
avatar
Myslíš toto?
Příloha: zip17672_pokus_1.zip (18kB, staženo 80x)
citovat
icon #017675
eLCHa
Já si teda vůbec nejsem jistý jestli rozumím, ale v rámci probuzení buněk mozkových jsem to zkusil

Do buněk dejte vzorec=(ROK(DNES())&"-"&List1!$B$1&"-"&ŘÁDEK())/1Ten, pokud datum neexistuje, vyhodí chybu a toho využijeme v kóduPrivate Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
If Not sh.Name = Target.Parent.Name Then
With sh.Range("A1:A31")
.EntireRow.Hidden = False
On Error Resume Next
.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Hidden = True
On Error GoTo 0
End With 'sh.Range("A1:A31")
End If
Next sh
Set sh = Nothing
End If
End Sub

Viz příloha
Příloha: zip17675_test.zip (16kB, staženo 66x)
citovat
#017683
avatar
Ahoj jo takhle bych potřeboval aby to fungovalo ale s tím mím původním makrem.

Sub Vymaz()

If Range("A1") = "" Then
Rows("1:1").Hidden = True
Else
Rows("1:1").Hidden = False
End If

If Range("A2") = "" Then
Rows("2:2").Hidden = True
Else
Rows("2:2").Hidden = False
End If

If Range("A3") = "" Then
Rows("3:3").Hidden = True
Else
Rows("3:3").Hidden = False
End If

End Sub

Potřebuji to dát do již hotového řešení, kde jsou navzájem provázané vzorce. Tak abych nezasahoval do vzorců a fungovalo to jen na listech, kde bude tato podmínka (výše uvedené makro).

Takže, tam kde budu chtít skrýt řádky vložím do listu toto makro a to potřebuji, aby se spustilo jen v případě že změním hodnotu v buňce B1 na listu VZORCE.

Šlo by to udělat? Strašně doufám, že ano. Ještě jednou opakuji makro Vymaz umístím do listů, kde ho budu potřebovat a potřebuji aby se spustilo po změně hodnoty v buňce B1 na listu VZORCE.citovat
icon #017685
eLCHa
Nebudu komentovat to makro (čímž jsem ho vlastně okomentoval ;)) )...
Vůbec vám nerozumím - jak chcete vkládat makro do listu?citovat
#017686
avatar
No jak tak tady na to koukám,
tak možná chce toto.
Do modulu listu "vzorce"
vlož
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
Call Vymaz
End If
End Sub

A to své makro Vymaz nahrad tímto
Sub Vymaz()
Dim Wsht As Worksheet
' pro vsechny listy mimo list vzorce
For Each Wsht In ThisWorkbook.Worksheets
If Wsht.Name <> "vzorce" Then
With Wsht
If .Range("A1") = "" Then
.Rows("1:1").Hidden = True
Else
.Rows("1:1").Hidden = False
End If
If .Range("A2") = "" Then
.Rows("2:2").Hidden = True
Else
.Rows("2:2").Hidden = False
End If
If .Range("A3") = "" Then
.Rows("3:3").Hidden = True
Else
.Rows("3:3").Hidden = False
End If
End With 'Wsht
End If
Next
End Sub

A pak si tam může přidat listy na kterých se nemá provádět.

Třeba to je ono 4citovat

Strana:  1 2 3 4 5   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