Aleksandra
Wesołowska
junior copywriter,
agencja kreatywna
LAVA
Temat: blokowanie warunkowe komórek
Witam,jestem tu nowa i od razu z problemem się zgłaszam :)
Po pierwsze muszę się upewnić - czy enable/disable cells w Excelu to po polsku zablokowanie/odblokowanie komórek?
Jeżeli tak, to teraz taka sprawa: czy da się warunkowo sformatować blokowanie danej komórki? Chodzi konkretnie o taką sytuację: jeżeli A1=0 (lub puste), to blokuj B1. Jeżeli A1 = coś innego, to odblokuj komórkę B1.
Sprawa jest niecierpiąca zwłoki, więc będę wdzięczna za szybką pomoc doświadczonych użytkowników Excela.
Pozdrawiam!
Michał
Pawłowski
Student, Szkoła
Główna Handlowa w
Warszawie
Temat: blokowanie warunkowe komórek
Nie mam angielskiej wersji Excela, ale na zdrowy rozum enable/disable to to samo, co odblokuj/zablokuj. Zagadnienie, które opisałaś można wykonać przy użyciu procedury obsługi zdarzenia Change dla obiektu Worksheet. W kodzie arkusza, w którym chcesz wprowadzić opisane przez Ciebie "formatowanie warunkowe", należy umieścić poniższą procedurę:Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If Target.Value = 0 Or IsEmpty(Target) Then Range("B1").Locked = True Else Range("B1").Locked = False
End If
End Sub
Zmiana wartości komórki A1 na 0 lub puste spowoduje zablokowanie komórki B1, z kolei zmiana wartości A1 na coś innego - odblokowanie B1.
Andrzej
W.
Telewizja Polsat Sp.
z o.o., Polsat Media
Sp. z o.o.
Temat: blokowanie warunkowe komórek
Witam, a jak poradzić sobie z całym zakresem komórek? Na przykład nawiązując do Waszych myśli, jeśli komórki w zakresie B1:B100 są puste lub mają wartość 0 to sąsiadujące z nimi komórki z zakresu A1:A100 są zablokowane do edycji (tutaj może się pojawiać komentarz "uzupełnij komórki z zakresu B1:B100". W przeciwnym wypadku, jeśli komórki z zakresu B1:B100 są niepuste lub wartość jest <>0 wówczas komórki z zakresu A1:A100 są odblokowane do edycji?
Marcin
Szczepanik
Starszy Spec od
jakości i raportów
:)
Temat: blokowanie warunkowe komórek
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:B100")) Is Nothing Then
Application.ScreenUpdating = False
If Target.Value = 0 Or Target.Value = "" Then
With ActiveSheet
.Unprotect "haslo"
.Cells(Target.Row, 1).Locked = True
.Protect "haslo"
End With
Else
With ActiveSheet
.Unprotect "haslo"
.Cells(Target.Row, 1).Locked = False
.Protect "haslo"
End With
End If
Application.ScreenUpdating = True
End If
End Sub
Z komunikatami proszącymi o uzupełnienie może być problem, bo zablokowane komórki mają własne okienko z info (chociaż pewnie i to jest do obejścia).
Powyższe rozwiązanie powinno być połączone z działaniami przygotowującymi, tzn. wcześniej powinny zostać odblokowane komórki do edycji (m. in. kolumna B) i arkusz zabezpieczony hasłem (tym samym, które będzie obok komend Unprotect i Protect) a także dostęp do makr powinien zostać zabezpieczony hasłem.
