• Zapisz się do newslettera, aby otrzymywać powiadomienia o nowościach na blogu
    Zapisując się, wyrażasz zgodę na przesyłanie Ci informacji o nowościach na tym blogu. Zgodę możesz w każdej chwili wycofać (szczegóły).

Lista rozwijana z uprawnieniami cz. 2 (VBA)

Czyli jeśli góra zatwierdziła – nie można edytować!

W poprzednim wpisie pokazywałam jak zahasłować wybrane zakresy komórek w arkuszu tak, aby mogły je edytować jedynie osoby, które znają hasło. Dzisiaj pokażę kod VBA, który nie pozwoli edytować komórek, jeśli konkretna komórka została już uzupełniona.

W naszej sytuacji akceptowania warunków zamówień będzie to działać tak, że jeśli Kierownik Kontroli Kredytowej (KKK) zaakceptuje umowę (zaakceptuje = Tak), osoby wcześniej akceptujące (Dział Obsługi Klienta (DOK) i Dyrektor Sprzedaży (DS)) nie będą mogli już zmieniać swoich decyzji. Czyli, krótko mówiąc, zamówienie zostanie finalnie zaakceptowane.

Ma to działać tak:

MalinowyExcel Listy rozwijane z uprawnieniami cd VBA Wynik

Zabierzmy się więc za stworzenie takiego rozwiązania.

Czytaj dalej

Lista rozwijana z uprawnieniami cz.1.

Czyli tylko osoby znające hasło mogą edytować zakres

Załóżmy, że akceptacja sprzedaży w naszej firmie odbywa się trójetapowy: najpierw sprzedaż akceptuje kierownik Działu Obsługi Klienta (DOK), następnie Dyrektor Sprzedaży (DS), a na końcu kierownik Działu Kontroli Kredytowej (KKK). I ten ostatni ma decydujące zdanie: w końcu zależy nam na sprzedaży a nie dobroczynności tutaj.

Formatka z zamówieniami wygląda następująco:

Zależna Lista rozwijana z uprawnieniami1-Formatka

Formatka

W ostatnich trzech kolumnach decydenci wpisują Tak lub Nie. I tylko decydenci mogą to zrobić.

Do rozwiązania tego problemu potrzebujemy listy rozwijanej i dodatkowo ochrony zakresów w arkuszu i oczywiście ochronę arkusza.

Do dzieła!

Czytaj dalej

Zapis nowej wersji pliku z kolejnym numerem w nazwie (VBA)

Czyli krótko o prostym wersjonowaniu plików

W jednym z poprzednich artykułów pokazałam sposób na to, aby podczas zamykania pliku, zapisywał się on pod nazwą wskazaną w komórce. Chodziło o to, aby mieć cały czas jeden plik, tylko z inną nazwą. Dzisiaj natomiast skoncentruję się na tym, aby tworzyć kolejne wersje plików, każdy z kolejnym numerem. Użytkownik będzie decydował o tym, jak ma się nazywać plik (jakie słowo kluczowe ma zawierać), a makro będzie automatycznie nadawało kolejny numer.

Poprzednie pliki – wcześniejsze wersje – zostaną na dysku (nie będą kasowane).

Dodatkowo, to użytkownik będzie uruchamiał makro, czyli decydował o tym, kiedy nowa wersja ma zostać stworzona. Oczywiście, jeśli chcesz, aby takie wersjonowanie działo się za każdym razem, gdy zamkniemy plik – kod trzeba będzie umieścić wewnątrz zdarzenia BeforeClose, tak, jak w poprzednim artykule.

Nasze makro będzie potrzebowało do swojego działania 2 komórek, najlepiej umieszczonych w roboczym arkuszu. Np. tak:

Formatka

  • Słowo kluczowe, czyli takie, jakie ma wystąpić w nazwie pliku uzupełnia użytkownik. Na powyższej formatce jest ono w komórce C3, którą nazwałam Komorka.
  • Numer wersji, jest uzupełniane przez makro. U mnie jest to komórka C4, którą nazwałam Numer.

Zaczynamy!

Czytaj dalej

Zapisz plik pod nazwą wskazaną w komórce (VBA)

Czyli trochę o “zabijaniu” plików

Naszym celem jest to, aby za każdym razem, gdy będziemy zamykać plik – zapisywał się on pod nazwą wskazaną w jednej z komórek arkusza. Formatka zawiera więc tylko tę komórkę, która zawiera przyszłą nazwę pliku:

Formatka

Formatka

Komórkę tę warto nazwać, aby ułatwić namierzanie jej w kodzie VBA, bo taki właśnie będziemy pisać, aby rozwiązać to zadanie. Komórkę nazwałam jako “Komorka” i takiego odwołania do niej będę używała dalej (tutaj, w sekcji Nazywanie komórek, dowiesz się jak nazywać komórki).

Czytaj dalej

Wyróżnianie aktywnej komórki kolorem

Czyli coś, o czym marzy każdy użytkownik…

… no, pewnie prawie każdy :). Ja bym się nie obraziła!

Chodzi o coś takiego:

Czyli gdziekolwiek w zakresie klikniemy – ta komórka ma się podświetlać na żółto (albo oczywiście jakikolwiek inny kolor). Tylko tyle i aż tyle, ponieważ, jak zobaczycie, to wcale nie będzie takie banalne… Do stworzenia tej magii użyję nazewnictwa komórek (choć da się bez), zdarzeń w VBA (makra) i oczywiście mojego kochanego formatowania warunkowego, do którego napiszę formułę…

Czytaj dalej