vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest środa, 10 czerwca 2026 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Kod ukrywający wiersze


otwartyotwarty rozpoczął: Marenty postów: 9



napisał: admin
postów: 613


umieszczony:
2 września 2010
08:34

edytowany:
2 września 2010
08:51

  
Dzięki za browca, ale zamieszczony przez Ciebie kod nie ma prawa działać.
Znowu chodzi o nieprawidłowe położenie nawiasów w funkcji UCase.
Twoja procedurę należy przerobić następująco:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$45" Then
Rows("46:58").Hidden = (UCase(Range("C45").Value) <> UCase("Tak"))

End If

If Target.Address = "$D$68" Then
Rows("72:74").Hidden = (UCase(Range("D68").Value) <> UCase("Oś na resorach wzmacnianych"))
End If

End Sub



I to będzie działać
napisał: Marenty
postów: 5


umieszczony:
1 września 2010
17:44

  
Więc ostatecznie kod wygląda tak:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$45" Then
Rows("46:58").Hidden = (UCase(Range("C45").Value <> "Tak"))
End If

If Target.Address = "$D$68" Then
Rows("72:74").Hidden = (UCase(Range("D68").Value <> "Oś na resorach wzmacnianych"))
End If
End Sub

I śmiga wyśmienicie .Duuuża krata browarku dla Panów za pomoc. Pozdrawiam i bardzo dziękuje :)
napisał: Marenty
postów: 5


umieszczony:
1 września 2010
17:24

  
No to ładnie :) tyle dni kombinowania(ale wydaje mi się ,że zmieniałem na dużą literke i wraz było bez skutku)
Teraz jest tak ,że wybieram z listy cokolwiek , wiersze są ukrywane,nie da się za pomocą wyboru z listy czegoś innego odkryć ponownie wiersze
napisał: Rycho
postów: 291


umieszczony:
1 września 2010
13:28

edytowany:
1 września 2010
15:45

  
Hej,
w adresach są wyłącznie wielkie litery a w tekście "$d$68" jest mała litera d.

Funkcja UCase zamienia wszystkie litery na litery WIELKIE a ty porównujesz wynik fukcji z tekstem zawierającym małe litery; zawsze otrzymasz False.

Errata: oczywiście... zawsze otrzymasz TRUE bo sprawdzasz 'czy różne'.
napisał: Marenty
postów: 5


umieszczony:
1 września 2010
12:10

  
Niestety sytuacja jak na wstępie, pierwsza część ładnie śmiga, druga ani drgnie :/
Obecnie kod przedstawia się tak:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$45" Then
Rows("46:58").Hidden = UCase(Range("C45").Value) <> "TAK"
End If

If Target.Address = "$d$68" Then
Rows("72:74").Hidden = UCase(Range("D68").Value) <> "Oś na wałkach skrętnych"
End If

End Sub

Próbowałem:
zamiast "Oś na wałkach skrętnych" "Tak" żeby nie było Polskich znaków itp
rodzieliłem komórki,aby adres odwoływał się do konkretnej komórki (d68) i niestety nic, dalej stoi kołkiem :/
napisał: admin
postów: 613


umieszczony:
1 września 2010
10:32

  
Juz wiem!

Problem leży w nieprawidłowym położeniu nawiasów.
Zobacz to:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$45" Then
    Rows("46:58").Hidden = UCase(Range("C45").Value) <> "TAK"
End If

If Target.Address = "$D$45" Then
    Rows("59:69").Hidden = UCase(Range("D45").Value) <> "TAK"
End If

End Sub



Innymi słowy funkcja UCASE powinna swoim zasięgiem obejmować tylko wartość komórki C45 (D45) a nie, tak jak poprzednio całość wyrażenia UCase(Me.Range("D45").Value <> "TAK")
napisał: Marenty
postów: 5


umieszczony:
1 września 2010
10:16

  
Cytat:
U mnie działa taki kod:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$45" Then
    Me.Rows("46:58").Hidden = CBool(UCase(Me.Range("C45").Value <> "TAK"))
End If

If Target.Address = "$D$45" Then
    Me.Rows("59:69").Hidden = CBool(UCase(Me.Range("D45").Value <> "TAK"))
End If

End Sub



Zwróć uwagę na wielkie litery w słowie "TAK".



Przy zastosowaniu tego kodu, nie nie odkrywają się wiersze po ponownej zmianie na "tak"- ale wiersze faktycznie ukrywa.
Natomiast reszta pozostaje bez zmiany :/.
Napiszę dokładnie jakie wartości powinny być w drugiej części:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$45" Then
Me.Rows("46:58").Hidden = CBool(UCase(Me.Range("C45").Value <> "TAK"))
End If

If Target.Address = "$D$45" Then
Me.Rows("72:74").Hidden = CBool(UCase(Me.Range("D68").Value <> "Oś na wałkach skrętnych"))
End If

End Sub

"Oś na wałkach skrętnych" -wybiera się z listy (poprawność danych), lista znajduje się w scalonej komórce (DEF:68) zastanawiam się czy nie powinienem inaczej zaadresować komórkę w kodzie, próbowałem również: ""Oś_na_wałkach_skrętnych" niestety bez skutku (w każdym bądź razie na liście jest: "Oś na wałkach skrętnych" i wolałbym żeby tak zostało.

Dziękuje za zainteresowanie postem
napisał: admin
postów: 613


umieszczony:
1 września 2010
09:27

  
U mnie działa taki kod:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$45" Then
    Me.Rows("46:58").Hidden = CBool(UCase(Me.Range("C45").Value <> "TAK"))
End If

If Target.Address = "$D$45" Then
    Me.Rows("59:69").Hidden = CBool(UCase(Me.Range("D45").Value <> "TAK"))
End If

End Sub



Zwróć uwagę na wielkie litery w słowie "TAK".
napisał: Marenty
postów: 5


umieszczony:
1 września 2010
08:23

  
Użyłem takiego kodu:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$45" Then
Rows("46:58").Hidden = (UCase(Range("C45").Value <> "Tak"))
End If
End Sub

Kod działa prawidłowo,jednak chciałbym zastosować go również do innych komórek
Czy powinno to wyglądać tak:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$45" Then
Rows("46:58").Hidden = (UCase(Range("C45").Value <> "Tak"))
End If
If Target.Address = "$C$45" Then
Rows("59:69").Hidden = (UCase(Range("D45").Value <> "Tak"))
End If
End Sub

Niestety ukrywa mi tylko wiersze do których odwołuje się pierwszy kod
Bardzo proszę o pomoc


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z