![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 0 Dołączył: 14.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem z visual basic w excel. Mianowicie chce zrobić tak: 1.Otwieram plik excel 2. Możliwość zmian w polach jest zablokowana 3. Klikam przycisk odblokuj 4. Wyświetla się formularz z hasłem 5. Wpisuje haslo 6. Jeśli poprawne to arkusz jest odblokowany, jeśli nie to odpowiedni komunikat Poniżej przedstawiam kod: Kod Sub Przycisk1_Kliknięcie() 'w momencie klikniecia przycisku sprawdzamy haslo If Not Podaj_haslo Then 'hasło niepoprawne! Else 'Hasło OK! MsgBox "Hasło poprawne" End If End Sub Private Function Podaj_haslo() As Boolean Dim arkusz As Worksheet 'zapis hasła do zmiennej Const hs = "admin" 'wywolanie formularza Haslo.Show If Haslo.hs_user = hs Then Podaj_haslo = True Else MsgBox "Podane hasło jest nieprawidłowe !" End If End Function A tu kod z formularza: Kod Private Sub ANULUJ_Click() 'Nacisnieto Anuluj, a wiec fiasko... 'ukrywamy formularz Me.Hide End Sub Private Sub OK_Click() 'nacisnięto klawisz OK If hs_user = "" Then 'sprawdzamy czy pola haslo i uzytownik sa wypełnione MsgBox ("Podane hasło jest niepoprawne") 'jezeli nie, to kontynuujemy Exit Sub End If 'wszystko OK, to konczymy sukcesem result = True 'ukrywamy formularz Me.Hide End Sub Krótko mówiąc nie mogę sobie poradzić z zablokowaniem arkusza i jego odblokowaniem, punkt 2 i 5. Hasło powinno być z góry ustalone, ma to tylko na celu ochronę przed zwykłym użytkownikiem przed zmianami danych, które do niego nie należą (IMG:style_emoticons/default/smile.gif) Jeśli ktoś będzie mógł pomóć - będę bardzo wdzięczny (IMG:style_emoticons/default/smile.gif) Ten post edytował adgad 18.09.2012, 19:56:01 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
1. Przecież możesz zablokować arkusz na hasło i nie potrzebujesz do tego VBA (chyba, że w tym nowym office coś się pozmieniało)
2. Jak nie wiesz jakiej użyć metody na obiekcie worksheet to użyj rejestratora makr a potem podejrzyj zapisany kod (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 0 Dołączył: 14.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
wiem o tej możliwości ale czytałem że później zdjęcie tego hasła wymaga użycia dodatkowych narzędzi. A opcja chron arkusz wymaga zdjęcia blokady gdy będę chciał coś zmodyfikować, co jest trochę uciążliwe nie tyle dla mnie co dla pozostałych korzystających z tego pliku. a chodzi jedynie o zablokowanie modyfikacji danych- ich podgląd powinien być możliwy. niestety excel nie oferuje tego co chce :-)
Jutro będę patrzył co to ten rejestrator makr. Jeśli natomiast ktoś mógłby podać kod na blokowanie arkusza- z odblokowaniem wowczas powinienem sobie poradzić to będę wdzięczny. reszta dziala. jeśli wcześniej coś wymysle to napisze :-) z góry dziękuje. Hmm.. Użyłem rejestratora makr, zablokowałem arkusz i wpakowałem to do funkcji, która powinna się uruchamiać po otwarciu skoroszytu: Kod Private Sub Workbook_Open() Sheets("Arkusz1").Select ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub Jednak nadal nie działa... tzn. arkusz nie jest zablokowany, więc coś źle robię. Czy ktoś programuje w VBA i może pomóc? Edit Teraz mi działa tak że arkusz jest blokowany jedynie wtedy gdy wywołam formularz a wpisze złe hasło ;/ Rozwiązanie więc jest coraz bliżej. Ponawiam prośbę o pomoc. Ten post edytował adgad 19.09.2012, 17:14:47 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1.Otwieram plik excel 2. Możliwość zmian w polach jest zablokowana Musisz zatem zacząć od tego, by niezależnie od poczynań użytkownika arkusz był zawsze zablokowany dla zmian, sugeruję zatem skorzystać ze zdarzeń: Kod Workbook_Open Workbook_BeforeClose Zresztą gdzieś tam w tym kombajnie powinien być podgląd zdarzeń (IMG:style_emoticons/default/wink.gif) Poczytaj trochę o środowisku pracy bo to programistyczna Walhalla, daje duże możliwości w porównaniu do zwykłego kolorowania kodu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 14:50 |