Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [VBA]Skrypt logowania
Forum PHP.pl > Inne > Hydepark
adgad
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żą smile.gif
Jeśli ktoś będzie mógł pomóć - będę bardzo wdzięczny smile.gif
Pilsener
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 wink.gif
adgad
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.
Pilsener
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ń 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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.