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
|