Inzicht in VBA-functies en hun toepassingen

Een functie voert een berekening en geeft een enkele waarde. De functie SOM voegt de som van een reeks waarden. Hetzelfde geldt voor de functies die gebruikt worden in uw VBA uitdrukkingen: Elke functie doet zijn ding en geeft een enkele waarde.

De functies die u in VBA gebruiken kan komen uit drie bronnen:

  • Ingebouwde functies die door VBA
  • Werkblad functies van Excel
  • Aangepaste functies die u (of iemand anders) te schrijven, met behulp van VBA

VBA biedt tal van ingebouwde functies. Sommige van deze functies te nemen argumenten en sommige niet.

VBA functie voorbeelden

Hier zijn een paar voorbeelden van het gebruik van VBA-functies in de code. Let op het gebruik van de functie MsgBox om een ​​waarde in een bericht weer te geven. Ja, MsgBox is een VBA-functie - een nogal ongewone één, maar een functie toch. Deze handige functie geeft een boodschap in een pop-up box.

Het systeem datum Display

Het eerste voorbeeld gebruikt VBA datum functie om het huidige systeem datum in een bericht weer te geven:

Sub DatumAan ()
MsgBox Date
End Sub

Merk op dat de functie Date geen argument heeft gebruikt. In tegenstelling tot blad functies, doet een VBA-functie met geen enkel argument niet een lege set haakjes nodig. In feite, als je zorgen voor een lege set haakjes, de VBE zal ze te verwijderen.

Om de datum en tijd van het systeem te krijgen, gebruik het nu functie in plaats van de functie Date. Of om alleen de tijd te krijgen, gebruikt u de Time-functie.

Het vinden van een string lengte

De volgende procedure gebruikt de VBA Len functie, die de lengte van een tekenreeks. De Len functie neemt één argument: de string. Wanneer u deze procedure uitvoert, de message box geeft 11 omdat het argument heeft 11 tekens.

Sub GetLength ()
Dim MyString As String
Dim snaarlengte As Integer
MyString = "Hello World"
Snaarlengte = Len (MyString)
MsgBox snaarlengte
End Sub

Excel heeft ook een functie, die u kunt gebruiken in uw werkblad formules. De Excel-versie en de VBA-functie werkt hetzelfde.

Display het gehele deel van een getal

De volgende procedure gebruikt de Fix-functie, die het gehele deel van een waarde terug - de waarde zonder decimalen:

Sub GetIntegerPart ()
Dim MyValue As Double
Dim intValue As Integer
MyValue = 123.456
IntValue = Fix (MyValue)
MsgBox intValue
End Sub

In dit geval is het berichtvenster weergegeven 123.

VBA heeft een soortgelijke functie genaamd Int. Het verschil tussen Int en Fix is ​​hoe elk deals met negatieve getallen.

  • Int geeft de eerste negatieve gehele getal dat kleiner is dan of gelijk aan het argument.
  • Fix geeft het eerste negatief geheel getal dat groter dan of gelijk aan het argument.

Het bepalen van een bestandsgrootte

De volgende Sub-procedure geeft de grootte in bytes van het uitvoerbare bestand van Excel. Het vindt deze waarde met behulp van de FileLen functie.

Sub GetFileSize ()
Dim hetBestand als Koord
HetBestand = "c: \ MSOffice \ EXCEL \ EXCEL.EXE"
MsgBox FileLen (hetBestand)
End Sub

Merk op dat deze routine harde codes de bestandsnaam (dat wil zeggen, het expliciet stelt het pad). Over het algemeen is dit geen goed idee. Het bestand is misschien niet op de C-schijf, of de map Excel kan een andere naam hebben. De volgende verklaring geeft een betere benadering:

HetBestand = Application.Path & "\ EXCEL.EXE"

Path is een eigenschap van het object Application. Het de naam van de map waarin de applicatie (dat is, Excel) is geïnstalleerd keert gewoon (zonder backslash).

Het identificeren van het type van een geselecteerd object

De volgende procedure gebruikt de TypeName functie, die het type van het geselecteerde object terug (als een string):

Sub ShowSelectionType ()
Dim SelType As String
SelType = TypeName (Selectie)
MsgBox SelType
End Sub

Dit kan een bereik, een ChartObject een tekstvak of elk ander type object dat kan worden geselecteerd.

De TypeName functie is zeer veelzijdig. U kunt deze functie ook gebruiken om de data type van een variabele te bepalen.

VBA functies die meer dan een waarde terug te doen

Een paar VBA-functies gaan boven en buiten de plicht. In plaats van simpelweg een waarde terug, deze functies hebben een aantal nuttige bijwerkingen. Tabel 1 geeft hen.

Tabel 1: Functies met Nuttig Side Voordelen


Functie


Wat het doet


MsgBox


Geeft een handige dialoogvenster met een bericht en knoppen. De functie geeft een code die aangeeft welke knop de gebruiker klikt.


InputBox


Geeft een eenvoudig dialoogvenster dat de gebruiker voor wat input vraagt. De functie geeft wat de gebruiker in het dialoogvenster binnenkomt.


Schelp


Voert een ander programma. De functie geeft de taak-ID (een unieke identificatie) van de andere programma (of een fout als de functie van de andere programma niet kan starten).

Het ontdekken van VBA-functies

Hoe kom je erachter welke functies VBA biedt? Goede vraag. De beste bron is het Excel Visual Basic Help-systeem. Tabel 2 bevat een gedeeltelijke lijst van functies (minus een aantal van de meer gespecialiseerde of obscure functies).

Voor volledige informatie over een bepaalde functie, typt u de naam van de functie in een VBA-module, beweeg de cursor ergens in de tekst en druk op F1.

Tabel 2: VBA meest bruikbare ingebouwde functies


Functie


Wat het doet


Abs


Retourneert een getal van absolute waarde


Reeks


Geeft een variant met een array


ASC


Zet het eerste teken van een string aan zijn ASCII-waarde


ATN


Geeft de boogtangens van een aantal


Kiezen


Geeft een waarde uit een lijst met items


Chr


Zet een ANSI waarde naar een string


Cos


Retourneren cosinus een aantal's


CurDir


Geeft het huidige pad


Datum


Geeft de huidige datum systeem


DateAdd


Geeft een datum waarop een opgegeven tijdsinterval is geweest


toegevoegd - bijvoorbeeld één maand vanaf een bepaalde datum


DateDiff


Geeft een geheel met het aantal opgegeven tijdsintervallen tussen twee data, bijvoorbeeld het aantal maanden tussen nu en je verjaardag


DatePart


Retourneert een integer met de gespecificeerd deel van een gegeven


datum - bijvoorbeeld, dag van het jaar een datum's


DateSerial


Converteert een datum om een ​​serienummer


DateValue


Zet een tekenreeks naar een datum


Dag


Geeft de dag van de maand uit een datum waarde


Dir


Geeft de naam van een bestand of map die overeenkomt met een patroon


Erl


Geeft het regelnummer dat een fout veroorzaakt


Dwalen


Geeft het foutnummer van een fout


Fout


Geeft de foutmelding die overeenkomt met een foutnummer


Exp


Geeft de basis van de natuurlijke logaritme (e) tot een bepaalde macht


FileLen


Geeft het aantal bytes in een bestand


Repareren


Retourneren gehele deel van een nummer van de


Formaat


Geeft een uitdrukking in een bepaald formaat


GetSetting


Geeft een waarde uit het Windows-register


Hex


Zet van decimaal naar hexadecimaal


Uur


Geeft de uren gedeelte van een tijd


InputBox


Toont een doos om voor het invoeren van een gebruiker wordt gevraagd


InStr


Geeft de positie van een string binnen een andere reeks


Int


Geeft het gehele gedeelte van een nummer


IBET


Geeft de rentebetaling voor een lijfrente of een lening


IsArray


Geeft Waar als een variabele is een array


IsDate


Geeft Waar als een uitdrukking is een datum


IsEmpty


Geeft Waar als een variabele is niet geïnitialiseerd


ISERROR


Geeft Waar als een uitdrukking is een fout waarde


Ontbreekt


Geeft Waar als een optionele argument niet werd doorgegeven aan een procedure


IsNull


Geeft Waar als een uitdrukking bevat geen geldige gegevens


IsNumeric


Geeft Waar als een uitdrukking kan worden beoordeeld als een aantal


IsObject


Geeft Waar als een uitdrukking verwijst naar een OLE-automatisering object


LBound


Geeft de kleinste subscript voor een dimensie van een array


LCase


Geeft een string omgezet in kleine letters


Links


Geeft een opgegeven aantal tekens vanaf de linkerkant van een string


Len


Geeft het aantal tekens in een string


Inloggen


Geeft de natuurlijke logaritme van een getal te voet e


Ltrim


Geeft een kopie van een string, met elke voorloopspaties verwijderd


Midden


Geeft een opgegeven aantal tekens van een string


Minuut


Geeft de minuten gedeelte van een tijdswaarde


Maand


Geeft de maand uit een datum waarde


MsgBox


Geeft een berichtvenster weer en (optioneel) geeft een waarde


Nu


Geeft de huidige datum en tijd van het systeem


RGB


Geeft een numerieke RGB-waarde die een kleur


Rechts


Geeft een opgegeven aantal tekens vanaf de rechterkant van een string


Rnd


Geeft een willekeurig getal tussen 0 en 1


Rtrim


Geeft een kopie van een string, met volgspaties verwijderd


Tweede


Geeft de seconden gedeelte van een tijdswaarde


SGN


Geeft een geheel dat teken een aantal geeft aan


Schelp


Loopt een uitvoerbaar programma


Zonde


Retourneren sinus een aantal's


Ruimte


Geeft een string met een opgegeven aantal spaties


Sqr


Retourneert een getal's vierkantswortel


Str


Geeft een string representatie van een aantal


StrComp


Geeft een waarde die het resultaat is van een string vergelijking


Koord


Geeft een herhaling teken of tekenreeks


Bruinen


Retourneren tangens van een getal's


Tijd


Geeft de huidige systeemtijd


Timer


Geeft het aantal seconden sinds middernacht


TimeSerial


Geeft de tijd voor een bepaalde uren, minuten en seconden


TimeValue


Zet een tekenreeks naar een tijd serienummer


Trimmen


Geeft een string zonder spaties voor of na


TypeName


Retourneert een tekenreeks die van een variabele data type beschrijft


UBound


Geeft de grootste beschikbare subscript voor de afmeting van een array


UCase


Zet een tekenreeks om in een hoofdletter


Val


Geeft de nummers die in een string


VarType


Geeft een waarde aangeeft subtype van een variabele


Weekdag


Geeft als resultaat een getal dat een dag van de week


Jaar


Geeft het jaar van een datum waarde