sobota, 12 grudnia 2009

Bold - makro pogrubiające tekst w komórkach

Po wykonaniu makra Tekst z zaznaczonych komórek będzie pogrubiony o ile wartość pola jest większa od 100 lub mniejsza od zera.

Sub pogrubKomorki()

    If TypeName(Selection) <> "Range" Then Exit Sub
    
    Application.ScreenUpdating = False
    
    For Each c In Selection
      If c.Value > 100 Or c.Value < 0 Then
         c.Font.Bold = True
      Else
         c.Font.Bold = False
      End If
    Next c
    
    Application.ScreenUpdating = True

End Sub

5 komentarzy:

  1. Tak czytam bloga i nie moge znalezc maila nigdzie, wiec napisze tutaj.
    Jak wiem(y) Excela (czy tez Calc'a) nie da sie skutecznie zabezpieczyc ale chcialbym jakos obronic swoja prace przed kims kto nie siedzi gleboko w VBA. Sek w tym, ze ja tez nie siedze w VBA :) I mam takie pytanie - czy mozliwe jest zabezpieczenie arkusza tak zeby zachowywal funkcjonalnosc przez np. 1 miesiac a potem wolal haslo? Wiem, ze da sie to rozkodowac ale chcialbym zeby to bylo maksymalnie trudne dla laika.

    OdpowiedzUsuń
  2. Nie ma problemu - komentarze są OK :)

    Aby zabezpieczyć arkusz w ten sposób - napisałbym makro automatycznie uruchamiane przy odpaleniu arkusza sprawdzające aktualną datę w systemie i datę pierwszego uruchomienia (tą można przechowywać w jakimś ukrytym "niedostępnym" miejscu arkusza). Makro musi być oczywiście dostępne najwyżej w trybie tylko do odczytu ale najlepiej gdyby całość VBA była dostępna na hasło.

    http://excel-calc-vba-basic.blogspot.com/search?q=zabezpieczanie+arkusza

    OdpowiedzUsuń
  3. Po przemysleniu sprawy z data naszla mnie jedna watpliwosc - co jesli uzytkownik sobie date w systemie zmieni? Wszystko wezmie w leb. Rozwiazaniem ktore mi przychodzi do glowy byloby sprawdzanie przy kazdym uruchomieniu ile dni juz minelo i zapisanie gdzies w arkuszu. Tylko czy mozna taka zmiane wprowadzic i automagicznie arkusz zapisac bez wiedzy uzytkownika?

    OdpowiedzUsuń
  4. chyba się zgubiłem...
    jasna sprawa, że arkusz taki będzie podatny na sztuczne zmiany dany na poziome OS; program "arkusz.xls" mógłby potencjalnie sprawdzać datę nawet zaraz po starcie systemu - i ewentualne zmiany czasu wykrywać i generować stosowny komunikat - tylko zastanawiam mnie jak szeroko grupa użytkowników będzie skłonna codziennie samodzielnie bądź automatycznie zmieniać datę na wczorajszą - sprowadza się to przecież do pracy w systemie ze wszystkimi plikami z tą samą datą stworzenia modyfikacji itp - koszmar!

    poza tym jeśli już wprowadzać takie akrobacje to i tak trzeba by było "wyjść" poza możliwości samego arkusza i opalać jakieś skrypty z poziomu administratora

    tu chyba wpadamy na ścieżką którą opisałeś jako "nie dla laików"

    OdpowiedzUsuń
  5. W prawdzie stary temat ale dopiszę swoją propozycję :)

    Proponuję przy uruchamianiu pliku zapisywać datę i czas otwarcia, przy zamykaniu sprawdzać czy data i czas zamknięcia jest większy niż otwarcia i zapisać czas zamknięcia. Przy kolejnym otwarciu znów porównać aktualny czas i datę z datą poprzedniego zamknięcia.
    W ten sposób nawet jeśli użytkownik przestawiałby czas i datę to w końcu i tak by doprowadziło do końca aktualnej "licencji".

    OdpowiedzUsuń