Konfiguracja sprzętu i oprogramowania

Tworzenie funkcji niestandardowej. Przykłady funkcji niestandardowych

Prawie wszystko kod programowania Moduły VBA zawarte są w procedurach dwóch typów Sub (podprogramy) i Function (funkcje). Głównym zadaniem procedury Function jest obliczenie pewnej wartości i zwrócenie jej do punktu, w którym została wywołana procedura funkcji.

Składnia funkcja procedura-funkcja:

Funkcja FunctionName(argumenty As) As

Nazwa_funkcji = Wartość_zwrotu

funkcja zakończenia

Procedury funkcyjne mogą być używane w różnych wyrażeniach.

Przykład 1

Na przykład najprostszą procedurą jest funkcja Function:

Funkcja F1(x jako waluta) jako waluta

Funkcja F1(x) może być wykorzystana w dalszych obliczeniach (kod programu modułu). Procedurę typu Function można wykonać tylko przez wywołanie jej z innej procedury. Aby to zrobić, w procedurze wywołującej konieczne jest przypisanie nazwy tego F1 (x) do jakiejś zmiennej.

Przykład 2

Na przykład Funkcji F1(x) można użyć w procedurze MySub() przez nadanie zmiennej „y” nazwy F1(x).

Dim y As Single „Deklaracja zmiennej y

y = F1 (9) ‘Zdefiniuj F1 (x) dla wartości x=9

Debug.Print y „Drukuj wartości w oknie bezpośrednim”

Funkcja F1 (x jako pojedynczy) jako pojedynczy

F1 = x^10 ‘Zwraca wartość x do potęgi 10

Tutaj funkcja F1(x)=$x^(10)$ dla wartości $ x=9$ zwraca wartość $3.486785E+09$ do wywołującej procedury MySub(). Jeśli wartość zwracana przez funkcję lub zmienna użyta w procedurze VBA nie ma zadeklarowanego typu danych, domyślnie zostanie ustawiony typ danych Wariant.

VBA wykorzystuje zarówno procedury Function, jak i funkcje wbudowane.

Funkcje wbudowane składają się z dwóch części: nazwy (identyfikatora) oraz argumentów. Funkcje wbudowane to gotowe formuły VBA, które wykonują określone akcje na wyrażeniach i zwracają pewną wartość w momencie ich wywołania.

Funkcje zwracają wartość wynikową zamiast nazwy, która jest używana w dalszych obliczeniach. Z reguły funkcje wymagają obecności argumentów, które są pisane w nawiasach, oddzielonych przecinkami. Ale niektóre funkcje nie wymagają argumentów. Na przykład funkcja Now(), która nie przyjmuje żadnych argumentów, zwraca bieżącą datę i godzinę systemową. Funkcje mogą służyć do tworzenia nowych wyrażeń lub funkcji.

Jak wstawić funkcję do tekstu programu? Aby użyć funkcji w wyrażeniach, musisz wpisać jej nazwę w instrukcji VBA. Aby wywołać funkcję wbudowaną, która nie wymaga argumentów, wystarczy wpisać jej nazwę (np. Now) w kodzie programu modułu:

PodMojaData()

Dim TD „deklaracja zmiennej TD”

TD = Teraz „Pobierz aktualną datę i godzinę systemową”

Debug.Print TD ‘Drukuj wartości w oknie bezpośrednim

Aby wywołać funkcję, która wymaga wprowadzenia jednego lub więcej argumentów, należy wprowadzić jej nazwę po prawej stronie operatora przypisania z parametrami (wartościami argumentów) ujętymi w nawiasy kwadratowe. Na przykład, aby wywołać wbudowaną funkcję Log (N) z jedną zmienną N w procedurze typu Sub, zmiennej Log_N przypisywana jest nazwa funkcji Log (50) z argumentem o wartości 50.

Sub logarytm naturalny()

Dim LogN ‘Deklaracja zmiennej LogN

Debug.Print LogN ‘Drukowanie wartości w oknie bezpośrednim

Uwaga 1

W tym przypadku wbudowana funkcja Log(N) dla argumentu o wartości 50 zwraca wartość 3.91202300542815 do punktu wywołania Log(50) procedury wywołującej „Sub Natural_Logarithm()”. Funkcję można wywołać za pomocą oddzielnego Oświadczenie VBA oraz umieszczenie jego nazwy wraz z listą wartości argumentów (parametrów) w formule lub wyrażeniu w programie VBA. Skrót VBA wykorzystuje zagnieżdżanie funkcji, co pozwala określić wywołanie jednej funkcji jako argumentu innej funkcji. W takim przypadku wartość zwracana przez pierwszą funkcję jest używana jako argument dla następnej funkcji.

VBA posiada duży zestaw wbudowanych funkcji i procedur ułatwiających programowanie, które można podzielić na następujące kategorie:

  • matematyczny;
  • funkcje sprawdzania typu;
  • funkcje przetwarzania ciągów;
  • funkcja formatu;
  • funkcje konwersji formatu;
  • funkcje daty i czasu.

Funkcje matematyczne

Funkcje matematyczne obejmują:

  • Abs (x) - moduł argumentu $x$;
  • Cos(x) - cosinus argumentu $x$;
  • Exp(x) - podniesienie podstawy logarytmu naturalnego do potęgi $x$;
  • Log(x) - logarytm naturalny argumentu $x$;
  • Rnd - liczba losowa z przedziału ;
  • Sin(x) - sinus argumentu $x$;
  • Sqr(x) - pierwiastek kwadratowy z $x$;
  • Atn(x) - arcus tangens $x$;
  • Tan(x) – tangens $x$;
  • Sgn(x) to znak $x$.

Fix(x) i Int(x) obie funkcje rzutowane część ułamkowa liczb i zwracają wartość całkowitą. Różnica między tymi funkcjami dotyczy ujemnych wartości argumentów. Int(x) zwraca najbliższą ujemną liczbę całkowitą mniejszą lub równą x, a Fix(x) zwraca najbliższą ujemną liczbę całkowitą większą lub równą x.

Funkcje sprawdzania typu

Oto funkcje określające typ zmiennej:

  • IsArray(x) - funkcja sprawdza, czy zmienna jest tablicą;
  • IsDate(x) określa, czy zmienna jest datą;
  • IsError(x) określa, czy zmienna jest kodem błędu;
  • IsNull(x) określa, czy zmienna ma wartość null;
  • IsNumeric(x) określa, czy zmienna jest wartością liczbową;
  • IsObject(x) określa, czy zmienna jest obiektem.

Funkcja formatowania

Funkcja formatowania zwraca wartość Variant (String) zawierającą wyrażenie sformatowane zgodnie ze składnią funkcji:

Format(Wyrażenie[,Format [,Pierwszy dzień tygodnia[,Pierwszy Tydzień Roku]]]), gdzie:

  • Wyrażenie - wymagany argument (każde poprawne wyrażenie jest kombinacją słów kluczowych, operatorów, zmiennych i stałych, których wynikiem jest ciąg, liczba lub obiekt);
  • Format jest parametrem opcjonalnym (dowolne prawidłowe nazwane lub zdefiniowane przez użytkownika wyrażenie formatu).

Jeżeli do nazwy funkcji zostanie dodany znak $, to funkcja zwraca wartość typu String.Funkcja zwraca wartość typu String.

Podczas tworzenia własnego formatu liczb możesz użyć następujących znaków:

  • 0 - rezerwuje pozycję bitu cyfrowego. Wyświetla cyfrę lub zero. Jeśli formatowana liczba ma jakąkolwiek cyfrę na tej pozycji bitu, gdzie 0 jest w ciągu formatującym, funkcja wyświetla tę cyfrę, jeśli nie, zero jest wyświetlane na tej pozycji;
  • "#" - działanie tego symbolu jest podobne do działania 0, z tą różnicą, że nieznaczne zera nie są wyświetlane;
  • . – rezerwuje pozycję separatora dziesiętnego, określa ile cyfr ma być wyświetlanych z lewej i prawej strony kropki dziesiętnej;
  • % - rezerwuje procentową prezentację liczby;
  • . oddziela setki od tysięcy.

Funkcje konwersji formatu

Obejmują one:

  • Val(string) Zwraca liczby zawarte w ciągu jako wartość liczbową odpowiedniego typu.
  • Str(number) — Zwraca wartość Variant (String), która jest ciągiem reprezentującym liczbę.

Oprócz funkcji Val i Str istnieje szereg funkcji służących do konwersji typów wyrażeń.

Funkcje przetwarzania ciągów

Wśród wielu funkcji są następujące:

  • Chr(code) — konwertuje kod ASCII na ciąg. Na przykład Chr(10) skacze do Nowa linia, Chr(13) – powrót karetki;
  • Mid(string, pos[,length]) - zwraca podłańcuch łańcucha zawierającego określoną liczbę znaków, gdzie String jest wyrażeniem napisowym, z którego jest wyodrębniany podłańcuch;
  • Pos to pozycja znaku w ciągu String, od którego zaczyna się żądany podciąg;
  • Długość to liczba znaków podłańcucha do zwrócenia;
  • Len(string) Zwraca liczbę znaków w ciągu.

Funkcje czasu i daty

Zwraca wartość Variant zawierającą datę systemową, bieżącą godzinę itd. Na przykład funkcja Date zwraca wartość zawierającą datę systemową.

Funkcja-procedura to specjalny rodzaj procedury VBA, która zwraca wynik. Zdefiniowane przez użytkownika funkcje procedur, takie jak wbudowane funkcje VBA, mogą mieć opcjonalne i nazwane argumenty. Nie można używać rejestratora makr do rejestrowania procedury funkcji, chociaż można edytować makro nagrane przez rejestrator i przekształcić je w procedurę funkcji.

Główną różnicą między funkcją-procedurą a innymi procedurami, poza faktem, że funkcje zwracają wartość, a procedury nie, jest to, że funkcja-procedura używa słów kluczowych funkcjonować oraz funkcja zakończenia.

Składnia:

Nazwa funkcji()
„Oświadczenia VBA
funkcja zakończenia

Function to słowo kluczowe deklarujące początek funkcji.

Nazwa - nazwa funkcji. Nazwy funkcji podlegają tym samym regułom, co inne nazwy identyfikatorów VBA.

Arglist - lista argumentów tej funkcji, element opcjonalny.

Typ - dowolny typ wartości zwracanej przez funkcję. Jeśli typ nie jest zdefiniowany, wynik zwracany przez funkcję procedury jest typu Variant.

Nazwa = wyrażenie - przypisanie funkcji, które mówi VBA, jaką wartość ma zwrócić funkcja, opcjonalnie. Jednak zawsze należy dołączyć instrukcję przypisania do funkcji procedury.

End Function - słowa kluczowe kończące funkcję.


Nawet jeśli funkcja nie ma argumentów (na przykład Now, Date), w deklaracji funkcji należy użyć nawiasów.

Zazwyczaj funkcja ma na celu wykonanie obliczenia i zwrócenie wyniku. Podczas deklarowania procedury funkcji określana jest nazwa każdego argumentu przekazanego do funkcji. Nazwy argumentów na liście są oddzielone przecinkami i muszą być zgodne z regułami mającymi zastosowanie do dowolnego identyfikatora VBA.


Poniżej znajduje się lista użycia prostej procedury funkcji, która usuwa początkowe i końcowe spacje oraz zlicza liczbę znaków w wyrażeniu.



Bez użycia funkcji zestawienie wyglądałoby tak:



Od tego prosty przykład Myślę, że główna idea wykorzystania funkcji-procedur jest jasna - poprawa czytelności kodu programu i jego zmniejszenie (innymi słowy funkcja-procedura jest pisana, gdy ten sam "kawałek" kodu występuje więcej niż 2- 3 razy w kodzie programu). Rzeczywiście, gdyby nasza funkcja-procedura składała się nie z jednego wiersza, ale powiedzmy z 10 wierszy; a kod programu użyłby tej funkcji-procedury 5 razy, wtedy całkowita lista programu byłaby mniejsza niż 38 wierszy.


Jak wspomniano wcześniej, VBA przekazuje wszystkie argumenty do funkcji procedury jako typy Variant. Dla każdego argumentu na liście argumentów można zadeklarować określone typy danych.

Funkcja napisana w VBA to kod, który wykonuje obliczenia i zwraca wartość (lub tablicę wartości). Po utworzeniu funkcji możesz jej używać na trzy sposoby:

  1. Jako formuła w arkuszu, gdzie może przyjmować argumenty i zwracać wartości.
  2. W ramach Twojej rutyny VBA. W procedurze Sub lub w ramach innych funkcji.
  3. W regułach formatowania warunkowego.

Chociaż Excel zawiera już ponad 450 wbudowanych funkcji, okresowo ich też brakuje. Czasami wbudowane funkcje nie mogą robić tego, co chcesz. Czasami, aby osiągnąć efekt, konieczne jest stworzenie ogromnego i złożona formuła co nie jest rozumiane przez innych. W takim przypadku możesz utworzyć funkcję niestandardową, która jest łatwa do odczytania i użycia.

Należy zauważyć, że funkcje zdefiniowane przez użytkownika utworzone za pomocą VBA są zazwyczaj znacznie wolniejsze niż funkcje wbudowane. Dlatego najlepiej nadają się do sytuacji, w których nie można uzyskać wyniku za pomocą wbudowanych funkcji lub nie ma wielu obliczeń, a pogorszenie wydajności nie jest krytyczne.

Z wbudowanych funkcji możesz korzystać nie tylko Ty, ale także Twoi współpracownicy. Napisane funkcje pojawią się wraz z innymi w oknie dialogowym Kreator funkcji. Może Cię onieśmielić proces tworzenia funkcji, ale śpieszę z zapewnieniem, że jest to dość proste.

Jaka jest różnica między procedurą (Sub) a funkcją (Funkcja)?

Główna różnica polega na tym, że procedura (sub) służy do wykonywania zestawu poleceń i nie jest wywoływana, w przeciwieństwie do funkcji (funkcji), w celu zwrócenia wartości (lub tablicy wartości).

Weźmy przykład do zademonstrowania. Na przykład istnieje ciąg liczb od 1 do 100 i konieczne jest oddzielenie parzystej od nieparzystej.

Za pomocą procedury (sub) możesz na przykład przeglądać komórki i podświetlać nieparzyste z wypełnieniem. Funkcja może być użyta w sąsiedniej kolumnie i zwróci TRUE lub FALSE w zależności od tego, czy wartość jest parzysta, czy nie. Tych. nie będzie można zmienić koloru wypełnienia za pomocą funkcji w arkuszu.

Tworzenie prostej funkcji niestandardowej w VBA

Stwórzmy prostą, zdefiniowaną przez użytkownika funkcję w VBA i zobaczmy, jak to wszystko działa.

Poniżej znajduje się kod funkcji, która pozostawia z tekstu tylko liczby, odrzucając wartości alfabetyczne.

Cyfry funkcji(tekst jako ciąg) As Long Dim i As Long Dim wynik As String For i = 1 To Len(Text) If IsNumeric(Mid(Text, i, 1)) Then wynik = wynik & Mid(Text, i, 1 ) Następne cyfry = CLng(wynik) Koniec funkcji

Aby wszystko działało dla Ciebie, musisz wstawić ten kod do modułu książki. Jeśli nie wiesz, jak to zrobić, zacznij od artykułu Jak nagrać makro w programie Excel.

Zobaczmy teraz jak działa funkcja, spróbujmy użyć jej na arkuszu:

Przed demontażem samej funkcji odnotowujemy 2 przyjemne chwile, które pojawiły się po stworzeniu:

  • Stała się dostępna, jak każda inna wbudowana funkcja (jak utworzyć ukrytą funkcję, powiemy dalej).
  • Po wprowadzeniu znaku „=” i rozpoczęciu wpisywania nazwy funkcji program Excel wyświetla wszystkie dopasowania i pokazuje nie tylko funkcje wbudowane, ale także zdefiniowane przez użytkownika.

Analiza funkcji krok po kroku

Teraz zanurkujmy głęboko i zobaczmy, jak powstała ta funkcja. Funkcja zaczyna się od linii

Cyfry funkcyjne (tekst jako ciąg) tak długie

Słowo funkcjonować mówi o początku funkcji, po której następuje jej nazwa, w naszym przypadku Liczby.

  • Nazwa funkcji nie może zawierać spacji. Ponadto nie można wywołać funkcji, która koliduje z nazwą odwołania do komórki. Na przykład nie można nazwać funkcji ABC123, ponieważ ta nazwa odnosi się również do komórki w arkuszu programu Excel.
  • Nie możesz nadać swojej funkcji takiej samej nazwy, jak istniejącej funkcji. Jeśli to zrobisz, Excel będzie preferował funkcję wbudowaną.
  • Możesz użyć znaku podkreślenia, jeśli chcesz oddzielić słowa. Na przykład, Suma ciekawie jest prawidłową nazwą.

Po nazwie argumenty funkcji są opisane w nawiasach. Podobny do wbudowanego Funkcje Excela. W naszym przypadku używany jest pojedynczy argument Tekst. Po nazwie argumentu podaliśmy jako ciąg, co oznacza, że ​​nasz argument jest wartością tekstową lub odwołaniem do komórki zawierającej wartość tekstową. Jeśli nie określisz typu danych, VBA potraktuje go jako Wariant(co oznacza, że ​​możesz użyć dowolnego typu danych, VBA sam go określi).

Ostatnia część pierwszej linii jak długo określa typ danych zwracanych przez funkcję. W naszym przypadku funkcja zwróci wartości całkowite. To również nie jest wymagane.

Drugi i trzeci wiersz funkcji deklarują dodatkowe zmienne wewnętrzne, których będziemy używać.

Dim i As Long Dim wynik As String

zmienny i użyjemy do iteracji znaków. A zmienna wynik do przechowywania pośredniego wyniku funkcji.

Zadaniem funkcji jest przejrzenie wszystkich znaków zmiennej Tekst i zapisanie tylko tych, które są cyframi. Zacznijmy więc pętlę od 1 do ostatniego znaku.

Dla i = 1 Do Len(Tekst)

Len to funkcja określająca liczbę znaków.

Głównym wierszem funkcji jest sprawdzenie, czy kolejnym znakiem tekstu jest cyfra, a jeśli tak, to zapisanie go w zmiennej wynikowej

If IsNumeric(Mid(Text, i, 1)) Then result = result & Mid(Text, i, 1)

Do tego potrzebujemy funkcji Czy numeryczne- ona wraca Prawdziwe jeśli tekst jest liczbą i Fałszywy Inaczej.

Funkcjonować Środek bierze z argumentu Tekst i-ty znak (wartość 1 , wskazuje, że funkcja Środek zajmuje tylko 1 znak)/

Funkcjonować Następny- zamyka pętlę Do tutaj wszystko jest jasne.

Cyfry = CLng(wynik)

Za pomocą tej linii konwertujemy zmienną tekstową wynik, który zawiera wszystkie cyfry argumentu Tekst, na wartość liczbową. I mówimy, jaki wynik powinna wyświetlić nasza funkcja Liczby.

Ostatnia linia kodu - funkcja zakończenia. Jest to wymagany wiersz kodu, który informuje VBA, że kod funkcji kończy się tutaj.

Powyższy kod opisuje różne części typowej funkcji niestandardowej utworzonej w VBA. W przyszłych artykułach omówimy te elementy bardziej szczegółowo, a także różne drogi wykonywanie funkcji VBA w Excelu.

Funkcja to grupa kodu wielokrotnego użytku, który można wywołać w dowolnym miejscu programu. Eliminuje to konieczność ponownego pisania tego samego kodu. Pozwala to programistom podzielić duży program na wiele mniejszych, łatwych do zarządzania funkcji.

Oprócz funkcji wbudowanych, VBA pozwala również na pisanie funkcji zdefiniowanych przez użytkownika. W tym artykule dowiesz się, jak pisać własne funkcje w VBA.

Definicja funkcji

Funkcja VBA może mieć opcjonalną instrukcję powrotu. Jest to konieczne, jeśli chcesz zwrócić wartość z funkcji.

Na przykład możesz przekazać dwie liczby do funkcji, a następnie możesz oczekiwać, że funkcja zwróci swoje mnożenie do wywołującego.

Notatka. Funkcja może zwrócić wiele wartości oddzielonych przecinkami jako tablicę przypisaną do samej nazwy funkcji.

Przed użyciem funkcji musimy zdefiniować tę konkretną funkcję. Najczęstszym sposobem zdefiniowania funkcji w VBA jest użycie słowa kluczowego Function, po którym następuje unikalna nazwa funkcji, która może zawierać listę parametrów i instrukcję z słowo kluczowe End Function , który wskazuje koniec funkcji. Poniżej znajduje się podstawowa składnia.

Składnia

Dodaj przycisk i dodaj następna funkcja.

Funkcja Nazwa funkcji (lista parametrów) instrukcja 1 instrukcja 2 instrukcja 3 ....... instrukcja n End Function

Przykład

Dodaj następującą funkcję, która zwraca obszar. Zwróć uwagę, że wartość/wartości mogą być zwracane z nazwą samej funkcji.

Funkcja find_area(Długość jako podwójna, opcjonalna szerokość jako wariant) If IsMissing(Szerokość) Then find_area = Długość * Długość Else find_area = Długość * Szerokość End If End Funkcja

Wywołanie funkcji

Aby wywołać funkcję, wywołaj funkcję, używając nazwy funkcji, jak pokazano na poniższym zrzucie ekranu.

Dane wyjściowe obszaru, jak pokazano poniżej, zostaną wyświetlone użytkownikowi.

Tabela 6.1. Wbudowane funkcje matematyczne
Funkcjonować Opis
abs Całkowita wartość
Atn Arcus tangens
Sałata Cosinus liczby
Do potęgi Zwraca liczbę e (2.718282) podniesioną do potęgi argumentu funkcji.
Naprawić Odrzuca część ułamkową liczby i zwraca liczbę całkowitą. Wynik dla liczb dodatnich jest liczbą mniejszą niż wartość wejściowa (Fix(2.5) zwróci 2), dla liczb ujemnych - więcej (Fix(-2.5) zwróci -2)
int Odrzuca część ułamkową liczby i zwraca liczbę całkowitą. Dla dodatniego wynikiem jest liczba mniejsza od wprowadzonej (Int(2.5) zwróci 2), dla negatywnej - również mniejsza (Int(-2.5) zwróci -3).
Dziennik zwroty naturalny logarytm liczby
Rnd Zwraca losową liczbę typu Single, ponadto jest to liczba z zakresu od 0 do 1. Aby zainicjować generator liczb losowych należy użyć dyrektywy Randomize - należy ją wywołać przed wywołaniem Rnd.
Sgn Funkcja ma na celu określenie znaku liczby. Jeśli liczba jest dodatnia, zwraca 1. Dla zera funkcja zwróci 0, dla liczby ujemnej -1.
Grzech Zatoka
sqr Pierwiastek kwadratowy
Dębnik Tangens

Spójrzmy na przykład. Dodaj do dokumentu Microsoft Word nazwijmy go cmd_Calc , nazwijmy Obliczenia i dodajmy poniższy kod (Listing 6.1.), ilustrujący działanie rozważanych funkcji.

Dim dblNumber As Double "Zmienna używana w obliczeniach Dim varResult" typ zmiennej Wariant dblNumber = Val(InputBox("Wpisz liczbę")) "Oblicz wartość bezwzględną wprowadzonej liczby "Najpierw przypisz wynik do zmiennej varResult "Dalej - wyświetl podpisany wynik w oknie "wiadomość", użyj " +" znak dla "konkatenacji ciągów, w przeciwnym razie" wywoła funkcje bezpośrednio "w MsgBox"e "Zauważ, że konwertujemy "wartości numeryczne na łańcuchy za pomocą funkcji Str" varResult = Abs(dblNumber) MsgBox ("Wartość bezwzględna" + _ Str(dblNumber) + " equals " + Str(varResult)) "Arctangent MsgBox ("Arctangent" + _ Str(dblNumber) + " equals " + _ Str(Atn(dblNumber)))) "Cosinus MsgBox ("Cosinus " + _ Str(dblNumber) + " równa się " + _ Str(Cos(dblNumber))) "e do potęgi wprowadzonej liczby MsgBox ("Number e do potęgi " + _ Str(dblNumber) + " równa się " + _ Str(Exp(dblNumber))) "Function Fix MsgBox ("Result function Fix for " + _ Str(dblNumber) + " equals " + _ Str(Fix(dblNumber)))) "Function Int MsgBox ("Wynik funkcji Int dla " + _ Str(dblNumber) + " to " + _ Str(Int(dblNumber)))) "Logarytm naturalny MsgBox ("Logarytm naturalny " + _ Str(dblNumber) + " równa się " + _ Str (Log(dblNumber))) "Pobierz losowe liczby "pierwsza liczba - od 0 do 1" druga - od 0 do 10. "Third - od 25 do 100" Czwarta - liczba całkowita od 0 do 34 Losuj MsgBox ("Grupa liczb losowych : " + _ Str(Rnd()) + ", " + _ Str(Rnd() * 10) + ", " + _ Str(Rnd() * 75 + 25) + ", " + _ Str (Int( Rnd() * 34))) "Function Sgn MsgBox ("Wynik Sgn dla " + _ Str(dblNumber) + " to " + _ Str(Sgn(dblNumber)))) "Sine MsgBox ("Sine " + _ Str( dblNumber) + " equals " + _ Str(Sin(dblNumber))) "Pierwiastek kwadratowy MsgBox ("Pierwiastek kwadratowy " + _ Str(dblNumber) + " equals " + _ Str(Sqr(dblNumber))))" MsgBox tangens (" Tangent " + _ Str(dblNumber) + " równa się " + _ Str(Tan(dblNumber))) Wykaz 6.1. Treser Kliknij wydarzenia przyciski cmd_calc

Zwróć uwagę na algorytm uzyskiwania liczby losowej, która znajduje się w pewnym zakresie za pomocą funkcji Rnd. Załóżmy, że musimy otrzymać losową liczbę od 15 do 40 . Na początek zdobądźmy liczbę od 0 do 40. Oczywiście do tego potrzebujemy takiego połączenia: Rnd()*40.

Aby „podnieść” poziom najmniejszej liczby losowej zwracanej przez wyrażenie do 15 , wykonaj następujące czynności.

Najpierw obliczmy różnicę między 40 a 15 - otrzymamy 25 . Tak więc, aby uzyskać losową liczbę od 0 do 25, możesz skorzystać z połączenia Rnd()*25.

Po drugie, dodajmy 15 do otrzymanej liczby losowej. Teraz wyrażenie na otrzymanie liczby losowej od 15 do 40 wygląda tak: Rnd()*25+15.

Sprawdźmy to stwierdzenie pod kątem poprawności. Funkcjonować Rnd wiadomo, że wraca losowe liczby od 0 do 1 . Jeśli funkcja zwróci 0, wynikiem wyrażenia będzie 15 (0*25+15) . Jeśli funkcja zwróci 1, wynikiem będzie 40 (25*1+15) . Wartości pośrednie Rnd da żądane liczby losowe od 15 do 40 .

Program obsługi kliknięcia przycisku cmd_Len (Listing 6.2.) będzie zawierał rozwiązanie następującego zadania: poinformuj użytkownika o długości wprowadzonego tekstu. Oczywiście do rozwiązania tego problemu potrzebujemy funkcji Len.

"Zmienna do przechowywania ciągu wejściowego Dim str_InpStr As String "Zmienna do przechowywania znalezionej długości ciągu Dim lng_StrLen As Long str_InpStr = InputBox("Ciąg wejściowy") "Oblicz długość ciągu lng_StrLen = Len(str_InpStr) MsgBox (" Długość ciągu wejściowego: _" + _ str_InpStr + "_ równa się " + Str(lng_StrLen) + _ " znaków") Listing 6.2. Przykład użycia funkcji Len

Na ryc. 6.2. możesz zobaczyć wynik obliczenia długości ciągu.


Ryż. 6.2.

Zajmijmy się teraz konwersją znaków - funkcjami LCase i UCase (Listing 6. 3.).

"Zmienna do przechowywania ciągu wejściowego Dim str_InpStr As String "Zmienna do przechowywania zmodyfikowanego ciągu znaków Dim str_NewStr As String str_InpStr = InputBox("Wprowadź tekst") "W str_NewStr będzie ciąg wejściowy", w którym wszystkie wielkie litery zostaną zastąpione małymi str_NewStr = LCase(str_InpStr) MsgBox ("Zmieniony ciąg: " + str_NewStr) "Teraz str_NewStr będzie miał ten sam ciąg", w którym wszystkie litery zostały zmienione na wielkie str_NewStr = UCase(str_InpStr) MsgBox ("Zmieniony ciąg: " + str_NewStr) Listing 6.3. Przykład wykorzystania funkcji LCase i UCase

Następna w kolejce jest usuwanie znaków - funkcje Mid , LTrim , Rtrim , Left , Right (Listing 6.4 .) Wśród tych funkcji, Mid jest najpotężniejszą - używając jej, możesz zrobić wiele rzeczy z łańcuchami.

"Zmienna do przechowywania ciągu wejściowego Dim str_InpStr As String "Zmienna do przechowywania wyciętych znaków Dim str_NewStr As String "Ustawmy ciąg, z którym będzie wygodniej pracować str_InpStr = " Witaj Alexander " "Funkcje usuwania spacji "Podczas wyprowadzania string, wstawiamy przed jego początkiem "i znakiem końcowym "_" aby "lepiej widzieć obecność" lub brak spacji MsgBox ("Pracujemy z następującym ciągiem: " + _ "_" + str_InpStr + "_") "LTrim - przypisz wyniki pracy" do zmiennej i wyświetl informacje w MsgBox str_NewStr = LTrim(str_InpStr) MsgBox ("LTrim wynik: " + _ "_" + str_NewStr + "_") "RTrim MsgBox ("RTrim wynik : " + _ "_" + RTrim(str_InpStr) + " _") "Trim MsgBox ("Wynik pracy Trim: " + _ "_" + Trim(str_InpStr) + "_") "Left - wycięcie 12 znaki z ciągu str_InpStr po wyczyszczeniu "spacji wiodących str_NewStr = Left(LTrim (str_InpStr), 12) MsgBox ("Pierwsze 12 znaków od lewej: " + _ str_NewStr) "Right - podobnie Wytnij 9 znaków od prawej str_NewStr = Right(RTrim(str_InpStr), 9) MsgBox ("Pierwsze 9 znaków od prawej: " + _ str_NewStr) "Funkcja Mid - pierwszy, wypisz jeden znak "od drugiego i piętnasta pozycja ciągu " wcześniej oczyszczone z dodatkowych spacji " na początku i na końcu str_NewStr = Mid(Trim(str_InpStr), 2, 1) MsgBox ("Drugi znak ciągu wejściowego: " + _ str_NewStr) str_NewStr = Mid(Trim(str_InpStr), 15, 1) MsgBox ("Piętnasty znak wprowadzonego ciągu znaków: " + _ str_NewStr) "Wyjście 5 znaków zaczynając od 15. znaku str_NewStr = Mid(Trim(str_InpStr), 15, 5) MsgBox („Pięć znaków ciągu od 15. pozycji: „ + _ str_NewStr) Listing 6.4. Przykład wykorzystania funkcji do wycinania znaków

Przyjrzyjmy się teraz przykładom działania funkcji.

Podobał Ci się artykuł? Podziel się z przyjaciółmi!
Czy ten artykuł był pomocny?
tak
Nie
Dziekuję za odpowiedź!
Coś poszło nie tak i Twój głos nie został policzony.
Dziękuję Ci. Twoja wiadomość została wysłana
Znalazłeś błąd w tekście?
Wybierz, kliknij Ctrl+Enter a my to naprawimy!