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

Wpisy z tagiem: kod VBA funkcji

wtorek, 19 kwietnia 2011

W ramach pisania własnego kodu VBA bardzo często konieczne jest wykorzystanie cyklicznego powtarzania jakiegoś fragmentu kodu.
O pętli For ... Next pisałam tu:
Pętla For...Next
Petla For...Next bardziej rozbudowana
Trudno ją jednak zastosować do wyrażeń nieregularnych. Do tego celu nadaje się pętla Do...Loop.

Jej struktura wygląda tak:

Do While [jaki waunek]           'warunek wejścia do pęli
   [wykonywana instrukcja]       'ciąg programu do cyklicznego powtarzania
  Exit Do                                    'warunek natychmiastowego opuszczenia pętli
Loop                                          'koniec pętli

Tyle teorii. Praktyczną przydatność zastosowania pętli najlepiej sprawdzić na konkretnym przykładzie i to właśnie będzie tematem następnej notki.

A może warto zajrzeć do książki? Na przykład tu:

wtorek, 14 września 2010

Mała, bardzo pożyteczna instrukcja oszczedzająca czas i upraszczająca kod. Umożliwia odwołanie się do obiektu bez ciągłego powtarzania jego nazwy.
Wyobraźmy sobie, że chcemy zmienić formatowanie np. w Arkuszu1, w komórkach A1:A10.
Standardowy zapis wyglada tak:

Worksheets("Arkusz1").Range("A1:A10").Interior.Color = 65535
- zmiana koloru tła
Worksheets("Arkusz1").Range("A1:A10").Font.Name = "Freestyle Script"
- zmiana czcionki
Worksheets("Arkusz1").Range("A1:A10").Font.Underline = True
- podkreślenie czcionki 

Z wykorzystaniem instrukcji With ten sam zapis wygląda tak:

With Worksheets("Arkusz1").Range("A1:A10")
         .Interior.Color = 65535 
         .Font.Name = "Freestyle Script"
         .Font.Underline = True
End With

Prawda, że krócej i "czyściej"? Instrukcja moze być wykorzystywana w stosunku do wszystkich kolekcji.

poniedziałek, 07 czerwca 2010

Funkcja VBA Abs(Liczba) to odpowiednik funkcji Excela MODUŁ.LICZBY. Zwraca wartośc bezwzględną argumentu funkcji.
Od strony matematycznej:
- wartością bezwzględną liczby dodatnia jest ta sama liczba
- wartością bezwzględną liczby ujemnej jest przeciwna do niej liczba dodatnia
- wartością bezwzględną zera jest zero

Jeżeli argumentem funkcji jest Null - to funkcja również zwraca wartość Null.

sobota, 05 czerwca 2010

Dodawanie w VBA jest banalnie proste. Kolejne składniki przedzielamy po prostu znakiem plus "+" lub minus "-". VBA nie ma zdefiniowanego słowa kluczowego na sumę wyrażeń.
Warto pamiętać o tym, że w ten sposób można dodawać do siebie również wartości tekstowe. Jezeli nie zdefiniujemy zmiennych jako liczb, to w wyniku dodawania a + b otrzymamy ab - działa więc analogicznie jak funkcja złącz teksty.  
Jeżeli dodawanie jest elementem funkcji użytkownika - możemy wykorzystać ją również z poziomu komórek Excela.

A z ciekawostek - jak zabawić się w liczenie w stylu kelnera czasów PRL i dodać 3 + 3 = 33 ? Wykorzystać własną funkcję VBA bez deklarowania zmiennych (lub zdeklarowane jako tekst) . Ponieważ VBA jest domyślne i będzie chciało zobaczyć w tych trójkach liczby, a nie tekst - w komórkach Excela wstawiamy na początku znak apostrofu ' . Wówczas każda liczba wpisana w komórkę będzie interpretowana jako tekst.

piątek, 14 maja 2010

Excel ma swoją funkcję Złącz.Teksty. Jej odpowiednikiem w kodzie VBA jest znak &, za pomocą którego łączymy kilka tekstów w jeden ciąg.
:Przykładowy zapis moze wyglądać tak:

Public Function FunkcjaLaczeTeksty(Tekst1, Tekst2) As String

FunkcjaLaczeTeksty = Tekst1 & "-" & Tekst2

End Function

Wartością funkcji jest w tym przypadku ciąg składający się wartości zmiennej Tekst1 i Tekst2 przedzielonych myślnikiem. Zmienne wpisywane sĄ bezpośrednio, natomiast konkretne wartości tekstowe (w przykładzie znak myślnika) - w cudzysłowiu.

 


 

wtorek, 04 maja 2010

Funkcja VBA Replace, będąca odpowiednikiem Podstaw w Excelu  pozwala za pomoca kodu VBA zamienić w danym ciągu tekstowym jeden znak/znaki innym.
:Przykładowy zapis moze wyglądać tak:

Public Function Zamianka(GdzieZmieniam, CoZmieniam, NaCoZmieniam)

Zamianka = Replace(GdzieZmieniam, CoZmieniam, NaCoZmieniam, 1, -1, vbTextCompare)

End Function

Argumentami funkcji są:
Expression - (typu String) - wyrażenie tekstowe, w któym dokonujemy zmian. W przykładzie zmienna GdzieZmieniam
Find
- (typu String) - znak lub ciąg tekstowy do zmiany (CoZmieniam)
Replace - (typu String) - znak lub ciag tekstowy, który ma zastąpić tekst usuwany. W przykładzie - zmienna NaCoZmieniam
Start - (typu Long) - miejsce w ciagu, od którego rozpoczynamy wyszukiwanie i zmianę. Nie jest to zmienna obowiązkowa, brak zadeklarowanej wartości powoduje zastosowanie wartości domyślnej 1.
Count - (typu Long) - zmienna określa liczbę zmian.Wartościa domyślną (argument nie jest obowiązkowy) jest -1. Taka wartość parametru oznacza, że wszystkie zmiany w całym tekście zostaną wykonane.
VbCompareMethod - sposób wyszukiwania.
  Wartość 1 oznacza wybór metody porównania tekstowego.
  VbTextCompare,    bez odróżniania liter małych i dużych.
  Wartość 0 oznacza wybór metody porównania binarnego VbBinaryCompare,
  z uwzględnieniem wielkości liter. Jest to wartość domyślna funkcji.

 

czwartek, 22 kwietnia 2010

Funkcja VBA Instr  jest odpowiednikiem funkcji Excelowych Szukaj.Tekst oraz Znajdź. Efektem jej działania jest odnajdywanie pozycji znaku lub ciągu znaków w innym ciągu.
Przykładowy zapis moze wyglądać tak:

Public Function MojeSzukanie(CoSzukam, GdzieSzukam, GdzieZaczynam, CzyDuzeMale) As Long
MojeSzukanie = InStr(GdzieZaczynam, GdzieSzukam, CoSzukam, CzyDuzeMale)
End Function

Argumentami funkcji są:
Start - typu Long - numer znaku,  od której zaczynamy wyszukiwanie. W przykładzie zmienna ta jest nazwana GdzieZaczynam.
String1 - typu String - przeszukiwany ciag tekstowy. W przykładzie - GdzieSzukam
String2 - typu String - poszukiwany ciag tekstowy. W przykładzie - CoSzukam
VbCompareMethod - sposób wyszukiwania. 
  Wartość 1 oznacza wybór metody porównania tekstowego.
  VbTextCompare,    bez odróżniania liter małych i dużych. Odpowiada funkcji
  Excela: Szukaj.Tekst
  Wartość 0 oznacza wybór metody porównania binarnego VbBinaryCompare,
  z uwzględnieniem wielkości liter. Jest to wartość domyślna funkcji.
 Jej odpowiednikiem w Excelu jest funkcja Znajdź

piątek, 16 kwietnia 2010

Funkcja VBA Mid jest odpowiednikiem Excelowej funkcji Fragment.Tekstu . Zwraca okreśłona argumentem liczbę znaków danego wyrażenia, licząc od określonego argumentem znaku.
Przykładowy zapis kodu moze wyglądać tak:

Public Function KawalekTekstu (MojTekst As String, MojStart As Long, IleZnakow As Long) As String
KawalekTekstu = Mid(MojTekst, MojStart, IleZnakow)
End Function

 

piątek, 09 kwietnia 2010

Funkcja VBA Right jest odpowiednikiem Excelowej funkcji PRAWY. Zwraca okreśłona liczbę znaków z końca danego wyrażenia.
Przykładowy zapis moze wyglądać tak:

Public Function PraweZnaki(MojTekst As String, IleZnakow As Long) As String
PraweZnaki = Right(MojTekst, IleZnakow)
End Function

 

Funkcja VBA jest odpowiednikiem funkcji Excelowej funkcji LEWY. Zwraca pierwsze znaki danego wyrażenia.
Przykładowy zapis moze wyglądać tak:

Public Function LeweZnaki(MojTekst As String, IleZnakow As Long) As String
LeweZnaki = Left(MojTekst, IleZnakow)
End Function

 
1 , 2
| < Wrzesień 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!