Moje doświadczenia z Excelem, Accesem i programowaniem w VBA

Wpisy z tagiem: słowa kluczowe VBA

niedziela, 05 stycznia 2014

Generator liczb pseudolosowych w kodzie VBA jest uruchamiany słowem kluczowym Randomize. Sama liczba jest generowana funkcją Rnd().

Funkcja Rnd zwraca losową liczbę z zakresu [0,1) czyli wartości równe lub większe od zera i mniejsze od jeden.

Konstrukcja takiego kodu wygląda tak:

Dim A

Randomize
A = Rnd

Chcąc otrzymać wartość z konkretnego zakresu liczb - musimy zastosować konstrukcję:

Dim A
Dim LiczbaOd
Dim LiczbaDo

Randomize
A = Rnd*(LiczbaDo-LiczbaOd)+LiczbaOd

Jeżeli potrzebna jest nam wartość całkowita - wystarczy skorzystać dodatkowo z funkcji Int.

Dim A
Dim LiczbaOd
Dim LiczbaDo

Randomize
A = Int(Rnd*(LiczbaDo-LiczbaOd)+LiczbaOd)

Odpowiednikiem funkcji w Excelu jest formuła Los()

 

 

Kurs Excel programowanie w VBA


poniedziałek, 11 listopada 2013

Właściwość Path skoroszytu Excela określa pełną ścieżkę katalogu, w którym znajduje się dany plik. Dla aktywnego skoroszytu wygląda to tak:

ThisWorkBook.Path

Jest prawie odpowiednikiem funkcji informacyjnej Excela Info(katalog). Prawie, gdyż różnią się ostatnim znakiem - Path nie jest zakończona znakiem "\".

 


 

 

 

 

 

 

 

Kurs Excel programowanie w VBA



wtorek, 14 maja 2013

Jak w praktyce wykorzystać funkcję VBA Split() do rozdzielenia tekstu? Sprawdźmy to na przykładzie zilustrowanym w notce o rozdzielaniu tekstu.

rozdzielanie ciągu znaków

W arkuszu mamy dane będące złożonymi ciągami prezentującymi oznaczenia faktur. Znakiem rozdzielającym jest / . Proste makro wstawiające w kolejne komórki poszczególne części każdej z takich faktur może wyglądać tak:

Public Sub Podziel()
Dim Komorka As Range
Dim i As Integer
Dim All

For Each Komorka In Range("A1:A3")
  All = Split(Komorka, "/", , vbTextCompare)
     For i = 0 To UBound(All)
       Komorka.Offset(0, i + 1) = All(i)
     Next i
Next Komorka
End Sub

 

 

 

 

 

 

 

 

 

Pierwsza pętla przechodzi przez poszczególne komórki. Wewnątrz niej jest jest druga pętla, która odczytuje poszczególne wartości zmiennej tablicowej All.

Kod wykorzystuje funkcje i metody:
Split, Offset, pętla For ... to, Pętla For Each In ...

Efekt działania kodu makra:

Split


piątek, 10 maja 2013

Funkcja VBA Split jest funkcją rozdzielającą łańcuch znaków.
Argumenty wejściowe Split() to:

Expression - wyrażenie do rozdzielenia

Delimiter - separator - znak rozdzielający
                 Jest to argument opcjonalny, wartość domyślna to spacja.

Limit - ilość pojedynczych łańcuchów wydzielonych z wyrażenia. Argument opcjonalny.
           Pominięcie wstawia wartość domyślna -1, zwracając wszystkie.

Compare - tryb porównania ciągów. Dla porównania tekstowego - wartość 1.
                 Argument opcjonalny, dla wartości domyślnej 0 - porównanie binarne.

Zwracana przez funkcję Split wartość jest wartością tablicową. Poszczególne elementy są indeksowane począwszy od wartości zero.

Efekt podobny jak działanie funkcji bezpośrednio w Excelu osiągamy poprzez zastosowanie polecenia Rozdzielanie tekstu.

 

 

Kurs Excel programowanie w VBA

 

 

A każdego kto ma ochotę nauczyć się VBA zapraszam tu:

VBA w Excelu - pierwsze kroki

VBA w Excelu dla tych, którzy już coś wiedzą


wtorek, 05 marca 2013

Offset to właściwość obiektu Range, odwołująca się do komórki przesuniętej o określoną liczbę wierszy i/lub kolumn. 
Sama konstrukcja jest zapisywana w formie:

Range(Adres_komórki_początkowej).Offset(RowIndex,ColumnIndex)

Parametr RowIndex wyznacza ilość wierszy przesunięcia

Parametr ColumnIndex wyznacza ilość kolumn przesunięcia

Argumenty te są opcjonalne - wartością domyślną jest zero czyli wyznaczeniu komórki bez przesunięcia.
Sama właściwość Offset tylko wyznacza komórkę. Kolejnym krokiem jest odniesienie się do własciwości komórki przesuniętej:

np. Range(Adres_komórki_początkowej).Offset(RowIndex,ColumnIndex).Value

odnosi się do wartości komórki.

Odpowiednikiem Offset w funkcjach Excela jest funkcja Przesunięcie

 

 

 

 

 

Kurs Excel programowanie w VBA

czwartek, 03 stycznia 2013

Funkcja arkuszowa VBA Indeks() należy do Funkcji Wyszukiwania i Odwołania VBA. Zwraca zawartość komórki z podanego wiersza lub kolumny w podanym zakresie lub tablicy.
Argumenty wejściowe WorksheetFunction() to:

Arg1 - zakres, tablica lub zaznaczony obszar komórek, do którego się odwołujemy.

Arg2 - numer wiersza z zakresu, z którego pobieramy wartość

Arg3 - numer kolumny z której pobieramy wartość.

Arg4 - argument opcjonalny czyli nieobowiązkowy. Wskazuje wartość, od której rozpoczynamy liczenie numerów wierszy czy kolumn w danym zakresie. Domyślnie jest tu liczba 1.

Wprowadzając wartości argumentów do funkcji - musimy podać jako wymagany Arg1 lub Arg2.

Odpowiednikiem funkcji w Excelu jest funkcja Indeks().

 

 

 

środa, 19 grudnia 2012

Funkcja Count należy do Funkcji Wyszukiwania i Odwołania VBA. Zlicza ilość elementów w podanym zakresie lub tablicy.
Argumentem wejściowym funkcji może być zdefiniowana tabela, nazwany zakres czy po prostu zaznaczony obszar komórek.

Podstawowe możliwości to:

Range(Zakres). Count -  liczba komórek w zakresie.

Range(Zakres). Rows.Count -  liczba wierszy w zakresie.

Range(Zakres). Columns.Count -  liczba kolumn w zakresie.


 

 

 

środa, 29 sierpnia 2012

Funkcja VBA Now() należy do funkcji Daty i Czasu. Wynikiem jej działania jest bieżąca data i godzina systemowa.
Funkcja ta jest funkcją nietrwałą tzn. jej wartośc jest zmienna.

Odpowiednikiem funkcji w Excelu jest funkcja Teraz()

 

 

 

czwartek, 19 lipca 2012

Funkcja VBA WeekDay(Date,FirstDayOfWeek) należy do funkcji Daty i Czasu. Wynikiem jej działania jest liczba odpowiadająca dniu tygodnia konkretnej daty.

Argumenty funkcji to:
Date - data w formacie liczbowym. Argument wymagany.
FirstDayOfWeek - argument opcjonalny. Liczba odzwierciedlająca przyjęty system liczenia dni, w zależności od tego - jaki dzień przyjmujemy jako pierwszy dzień tygodnia.  

- VbUseSystem  - odpowiada systemowym ustawieniom komputera
- VbSunday  - pierwszy 
dzień tygodnia to niedziela. Jest to ustawienie domyślne
- VbMonday pierwszy dzień tygodnia to poniedziałek
- VbTuesday pierwszy dzień tygodnia to wtorek
- VbWednesday pierwszy dzień tygodnia to środa
- VbThursday pierwszy dzień tygodnia to czwartek
6 - VbFriday pierwszy dzień tygodnia to piątek
- VbSaturday pierwszy dzień tygodnia to sobota

Odpowiednikiem funkcji w Excelu jest funkcja Dzień.Tyg() 

 

 

 

 

czwartek, 05 lipca 2012

Funkcja VBA TimeSerial(Year,Month,Day) należy do grupy funkcji Daty i Czasu. Jest odpowiednikiem funkcji Excela Czas()  i działa identycznie jak ona.
Argumenty funkcji to: 
Hour - zmienna typu Integer. Określa godzinę wprowadzanego czasu. Wartość argumetu powinna się zawierać  w przedziale 0 - 23. Liczby większe niż 23 zostaną zmnijeszone o całkowitą wielokrotność liczby 24 czyli np. 55=2*48 + 7 - otrzymamy godzinę 7. Argumenty ujemne skutkują błędem.
Jeżeli jako argument zostanie użyta liczba ułamkowa - Excel zignoruje część po przecinku (nie zaokrągli).
Minute - zmienna typu Integer. Określa minutę wprowadzanego czasu
Second- zmienna typu Integer, określająca dzień miesiąca.

Zaróno argument Minute jak i Second powinny zawierać sie w przedziale od 0 do 59.Wpisanie liczby większej od 59 pokaże czas określony po odjęciu wielokrotności liczby 60, jednocześnie jednak zwiększy godzinę(minutę) o liczbę tych wielokrotności. Np. po wpisaniu Minute=77- pokaże 17 minut, ale w godzinie zwiększonej o 1 w stosunku do argumentu Godzina. Wartości ujemne - w analogiczny sposób zmniejszą wartość Godziny czy Minuty.

Prosty przykłąd zastosowania funkcji TimeSerial() w kodzie VBA do stworzenia własnej funkcji czasuwygląda tak:

Private Function MojCzas(Godzina As Integer, Minuta As Integer, Sekunda As Integer)
MojCzas = TimeSerial(Godzina, Minuta, Sekunda)
End Function

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

 

 


 
1 , 2 , 3 , 4 , 5
| < Listopad 2017 > |
Pn Wt Śr Cz Pt So N
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      


Książki warte polecenia
zobacz szczegóły...


A tu oferta na dziś:





ministat liczniki.org



Napisz do mnie!