< návrat zpět
MS Excel
Téma: Makro - skrývání buněk na základě hodnoty buňky
Zaslal/a Lur 16.12.2015 12:16
Dobrý den,
prosím o pomoc s tvorbou makra, které by na základě změny hodnoty buňky "B1" v listu 3 skrylo nebo zobrazilo řádky 45 - 50 v listu 4. Hodnota buňky "B1" v listu 3 je dána jiným makrem a nabývá hodnot od 1 do 10. Pokud je hodnota rovna 1,2 nebo 10, mají zůstat řádky v listu 4 zobrazeny, u všech zbývajících hodnot mají být skryty.
Potřebuji, aby se to chovalo "dynamicky", tedy např. pokud je hodnota 3 - řádky jsou skryty a poté se hodnota změní na 2 - řádky se odkryjí a opačně.
Děkuji za pomoc.
... zatím jsem sepsal toto, ale nefunguje, neumím se odkázat na jiný list.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Check As Range
Set Check = Range("I1")
If Not Intersect(Check, Target) Is Nothing Then
If Check.Value = 1 Or Check.Value = 2 Or Check.Value = 10 Then
Call Zobraz_kritérium_4
End If
If Check.Value = 3 Or Check.Value = 4 Or Check.Value = 5 Or Check.Value = 6 Or Check.Value = 7 Or Check.Value = 8 Or Check.Value = 9 Then
Call Skryj_kritérium_4
End If
End If
End Sub
Sub Skryj_kritérium_4()
'
' Skryj_kritérium_4 Makro
'
Rows("45:50").Select
Selection.EntireRow.Hidden = True
Range("I1").Select
End Sub
Sub Zobraz_kritérium_4()
'
' Zobraz_kritérium_4 Makro
'
'
Rows("44:51").Select
Selection.EntireRow.Hidden = False
Range("I1").Select
End Sub
Vovka(16.12.2015 13:54)#028724 Je to psané hodně neohrabaně, ale zas tak daleko od cíle nejste. Jenom v popisu problému pracujete s buňkou B1 a v kódu s I1. To nejspíš pokládáte za drobný detail
.
Jestli se vám ještě dlouho nikdo neozve, tak ten váš kód přepíšu do spisovnější podoby.
Když jsem to začal upravovat, scvrklo se mi to na tuto událostní proceduru (nutno umístit do modulu pro list):
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Check As Range
Set Check = Range("I1")
If Intersect(Check, Target) Is Nothing Then Exit Sub
Select Case Check.Value
Case 1, 2, 10
Sheets(2).Rows("45:50").Hidden = False
Case 3 To 9
Sheets(2).Rows("45:50").Hidden = True
End Select
End Sub
Označení Sheets(2) je volání listu s těmi skrývanými řádky
citovat
Lur(18.12.2015 8:52)#028755 Výtečně, funguje to!
Děkuji velice, hezké svátky :-).
citovat