Funkcja VBA Environ

Environ to funkcja  systemowa VBA Jej zadaniem jest pobieranie wartości zmiennych środowiskowych systemu operacyjnego, czyli takich, które są ustawione przez Windows i opisują aktualne środowisko użytkownika.

kliknij, aby powiekszyć

Najczęściej stosowane wartości argumenty Expression to:

Expression Zwracana wartość
Username Nazwa zalogowanego użytkownika
ComputerName Nazwa komputera
OS System operacyjny
Temp Ścieżka do folderu tymczasowego

W praktyce może to wyglądać np.tak:

Public Sub Uzytkownik()
Dim User As String
Dim FolderTymczasowy As String
User = Environ(„Username”)
FolderTymczasowy = Environ(„Temp”)
End Sub

W zależności od wersji i ustawień komputera zmienne funkcji mogą się różnić. Wszystkie dostępne zmienne można sprawdzić taką procedurą:

Public Sub WypiszZmiennieSrodowiskowe()
Dim i As Integer
For i = 1 To 50
Debug.Print i & Environ(i)
Next i
End Sub

W swoich projektach zdarza mi się stosować tę funkcję. Wykorzystuję ją głównie do sprawdzenia użytkownika i ukrywania/odkrywania niektórych arkuszy. Ścieżka do folderu tymczasowego jest również przydatna do tworzenia chwilowych plików.


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Sekcje formularza

Nagłówek i stopka to części formularza położone na górze (nagłówek) i na dole (stopka). 

W projekcie nowego formularza – domyślnym ustawieniem jest brak zarówno stopki jak i formularza. Włączamy je klikając prawym przyciskiem myszy w widoku projektu formularza i wybierając opcję z menu podręcznego. 

Pomiędzy nagłówkiem i stopką znajduje się sekcja szczegóły. 

Każda sekcja ma swój własny arkusz właściwości, gdzie można ustawić ich podstawowe właściwości i związane z nimi zdarzenia. 

kliknij, aby powiększyć
kliknij, aby powiększyć
kliknij, aby powiększyć

Szczegóły – to część formularza, w której umieszczane pola związane z źródłem danych, zmieniające wartość po przejściu do innego rekordu.
Nagłówek/stopka – takie same dla każdego rekordu, służą do umieszczania wspólnych formantów np. tytułu, przycisków makr itp. 

Jeżeli wysokość formularza jest większa niż widok na ekranie – nagłówek i stopka są zawsze widoczne, pasek przewijania jest widoczny tylko w sekcji szczegóły. 

Moim zdaniem nagłówek i stopka powinny być w każdym formularzu, ja zawsze je stosuję w swoich projektach. Są bardzo przydatne i ułatwiają poruszanie się po aplikacji. 


 

 

 

Formularz dzielony

Formularz dzielony to formularz, w którym na jednym ekranie widoczny są  2, oparte o to samo źródło danych  formularze: formularz ciągły oraz formularz pojedynczy. W obydwu częściach formularza dzielonego aktywny jest ten sam rekord. 

kliknij, aby powiększyć

Aktywując konkretny rekord w arkuszu danych, jednocześnie zmienia się widok w części formularza pojedynczego.  

Formularz dzielony tworzymy ustawiając Widok domyślny w karcie Format w arkuszu właściwości

kliknij, aby powiększyć

Położenie arkusza danych w formularzu można ustawić również w karcie Format w arkuszu właściwości:

kliknij, aby powiększyć

Wszystkie inne właściwości formularza są takie same jak w innych formularzach. 
Najczęściej jest wykorzystywany w ten sposób, że w części formularza pojedynczego występują dodatkowe pola oparte o różne wyrażenia. Bywa przydatny. 


 

 

 

Metoda Recordset.MovePrevious

MovePrevious to metoda obiektu Recordset powodująca przejście do poprzedniego rekordu. 

kliknij, aby powiększyć

Działa identycznie jak przejście do następnego rekordu, ale w przeciwnym kierunku. 

Może być przydatna, choć jakoś nie pamiętam, abym kiedyś ją używała. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Metoda Recordset.MoveNext

MoveNext to metoda obiektu Recordset powodująca przejście do następnego rekordu. 

kliknij, aby powiększyć

Metoda ta jest wykorzystywana do przechodzenia do kolejnych rekordów, najczęściej w pętli.  
Np.

Private Sub PrzejdzDoNastepnego()
Dim RST As ADODB.Recordset
Set RST = New ADODB.Recordset
If Not .EOF Then .MoveFirst
While Not .EOF
'(…)
If Not .EOF Then .MoveNext
Wend
.Close
End With
Set RST = Nothing
End Sub

Po dojściu do ostatniego rekordu Recordset, metoda MoveNext nie wywoła błędu, ale już próba odczytu kolejnych pól po takim przejściu wywoła błąd 3021


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Metoda Recordset.MoveLast

MoveLast to metoda obiektu Recordset powodująca przejście do ostatniego rekordu. 

kliknij, aby powiększyć

Działa identycznie jak przejście do pierwszego rekordu.

Może być przydatna, choć jakoś nie pamiętam, abym kiedyś ją używała. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Metoda Recordset.MoveFirst

MoveFirst to metoda obiektu Recordset powodująca przejście do pierwszego rekordu. 

kliknij, aby powiększyć

Metoda ta jest wykorzystywana najczęściej po otwarciu zestawu Recordset. Jeżeli ma on rekordy (czyli właściwość Eof ma wartość False) – przechodzimy do pierwszego rekordu, chcąc mieć pewność, że żaden rekord nie zostanie pominięty.  
Np.

Private Sub PrzejdzDoPierwszego()
Dim RST As ADODB.Recordset
Set RST = New ADODB.Recordset
RST.Open „TabelaKsiazki”, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
With RST
If Not .EOF Then .MoveFirst

’ (…)

.Close
End With
Set RST = Nothing
DoCmd.Close
End Sub

 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela