Das Verständnis VBA-Funktionen und ihre Verwendung

Eine Funktion führt eine Berechnung und gibt einen einzelnen Wert. Die SUM-Funktion fügt die Summe einer Reihe von Werten. Das gleiche gilt für Funktionen wahr, die in VBA-Ausdrücke: Jede Funktion seine Sache tut und gibt einen einzelnen Wert.

Die Funktionen, die Sie in VBA können aus drei Quellen stammen:

  • Integrierte Funktionen von VBA zur Verfügung gestellt
  • Arbeitsblatt Funktionen von Excel
  • Benutzerdefinierte Funktionen, die Sie (oder jemand anderes) zu schreiben, mit VBA

VBA bietet zahlreiche integrierte Funktionen. Einige dieser Funktionen nehmen Argumente und einige nicht.

VBA-Funktion Beispiele

Hier sind ein paar Beispiele für die Verwendung von VBA-Funktionen im Code. Beachten Sie die Verwendung der MsgBox-Funktion einen Wert in einem Meldungsfeld angezeigt werden soll. Ja, das ist MsgBox eine VBA-Funktion - eine eher ungewöhnliche, sondern eine Funktion dennoch. Diese nützliche Funktion zeigt eine Meldung in einem Pop-up-Dialogbox.

Anzeigen des Systemdatum

Im ersten Beispiel wird VBA Datum Funktion das aktuelle Systemdatum in einem Meldungsfeld anzuzeigen:

Sub DatumAnz ()
MsgBox Datum
End Sub

Beachten Sie, dass die Datumsfunktion kein Argument verwenden. Im Gegensatz zu Tabellenfunktionen ist eine VBA-Funktion ohne Argument nicht ein leeres Klammern erfordern. In der Tat, wenn Sie ein leeres Klammern sorgen, wird die VBE sie zu entfernen.

Um das System Datum und Uhrzeit erhalten, verwenden Sie die Funktion Now anstelle der Datumsfunktion. Oder nur die Zeit zu erhalten, verwenden Sie die Zeitfunktion.

Die Suche nach einer Stringlänge

Das folgende Verfahren verwendet die VBA Len-Funktion, die die Länge einer Zeichenfolge zurückgibt. Die Funktion Len nimmt ein Argument: die Zeichenfolge. Wenn Sie diese Prozedur ausführen, zeigt das Meldungsfeld 11, da das Argument 11 Zeichen hat.

Sub GetLength ()
Dim MyString As String
Dim StringLength As Integer
MyString = "Hallo Welt"
StringLength = Len (MyString)
MsgBox StringLength
End Sub

Excel hat auch eine Funktion, die Sie in Ihrem Arbeitsblatt Formeln verwenden können. Die Excel-Version und die VBA-Funktion die gleiche Arbeit.

Anzeigen der ganzzahlige Teil einer Reihe

Das folgende Verfahren verwendet die Fix-Funktion, die gibt die ganze Zahl Teil eines Wert - der Wert ohne Dezimalstellen:

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

In diesem Fall zeigt das Meldungsfeld 123.

VBA hat eine ähnliche Funktion namens Int. Der Unterschied zwischen Int und Fix ist, wie jeder beschäftigt sich mit negativen Zahlen.

  • Int gibt die erste negative ganze Zahl, die kleiner ist als oder gleich dem Argument.
  • Fix gibt die erste negative ganze Zahl, die größer oder gleich dem Argument ist.

Bestimmen einer Dateigröße

Die folgende Sub-Prozedur zeigt die Größe, in Bytes, der Excel-ausführbare Datei. Er findet diesen Wert durch die FileLen Funktion.

Sub GetFileSize ()
Dim thefile As String
Thefile = "c: Msoffice Excel Excel.exe"
MsgBox FileLen (thefile)
End Sub

Beachten Sie, dass diese Routine Fest Codes der Dateiname (das heißt, es heißt es ausdrücklich, den Pfad). Im Allgemeinen ist dies keine gute Idee. Die Datei möglicherweise nicht auf dem Laufwerk C, oder die Excel-Ordner einen anderen Namen haben. Die folgende Anweisung zeigt einen besseren Ansatz:

Thefile = Application.Path " EXCEL.EXE"

Pfad ist eine Eigenschaft des Application-Objekts. Es gibt einfach den Namen des Ordners, in dem die Anwendung (das heißt, Excel) (ohne Backslash) installiert ist.

Die Ermittlung der Art eines ausgewählten Objekts

Das folgende Verfahren verwendet die Funktion Type-Name, die den Typ des ausgewählten Objekts zurückgibt (als String):

Sub ShowSelectionType ()
Dim SelType As String
SelType = Type-Name (Auswahl)
MsgBox SelType
End Sub

Dies könnte ein Range, ein ChartObject-, ein TextBox, oder jede andere Art von Objekt sein, das ausgewählt werden kann.

Die Funktion Type-Name ist sehr vielseitig. Sie können mit dieser Funktion auch den Datentyp einer Variablen zu bestimmen.

VBA-Funktionen, die mehr als einen Wert zurückgeben tun

Einige VBA-Funktionen gehen darüber hinaus den Ruf der Pflicht. Anstatt einfach nur einen Wert zurückgeben, haben diese Funktionen einige nützliche Nebenwirkungen. Tabelle 1 listet sie auf.

Tabelle 1: Funktionen mit nützlichen Neben Vorteile

Funktion

Was es macht

MsgBox

Zeigt eine praktische Dialogfeld eine Nachricht und Schaltflächen enthält. Die Funktion gibt einen Code, der klickt welche Schaltfläche der Benutzer identifiziert.

Eingabefeld

Zeigt ein einfaches Dialogfeld, das den Benutzer für einige Eingabe fragt. Die Funktion gibt, was der Benutzer gibt in das Dialogfeld.

Schale

Führt ein anderes Programm. Die Funktion liefert den Task-ID (Eine eindeutige Kennung) des anderen Programm (oder einem Fehler, wenn die Funktion nicht das andere Programm starten können).

Discovering VBA-Funktionen

Wie finden Sie heraus, welche Funktionen VBA bietet? Gute Frage. Die beste Quelle ist die Excel Visual Basic-Hilfesystem. Tabelle 2 enthält eine unvollständige Liste von Funktionen (minus einige der spezialisierteren oder obskuren Funktionen).

Ausführliche Informationen zu einer bestimmten Funktion, geben Sie den Namen der Funktion in ein VBA-Modul, um den Cursor irgendwo im Text bewegen, und die Taste F1 drücken.

Tabelle 2: VBA nützlichsten Eingebaute Funktionen

Funktion

Was es macht

Abs

Gibt den Absolutwert der Zahl

Feld

Gibt eine Variante ein Array mit

Asc

Wandelt das erste Zeichen einer Zeichenfolge zu seinem ASCII-Wert

Atn

Gibt den Arkustangens einer Zahl

Wählen

Gibt einen Wert aus einer Liste von Elementen

Chr

Wandelt einen ANSI-Wert in einen String

cos

Gibt den Cosinus-Zahl

CurDir

Gibt den aktuellen Pfad

Datum

Gibt das aktuelle Systemdatum

DateAdd

Liefert ein Datum, an dem ein bestimmtes Zeitintervall wurde

hinzugefügt - zum Beispiel einen Monat ab einem bestimmten Datum

DateDiff

Gibt eine ganze Zahl die Anzahl der festgelegten Zeitintervallen zwischen zwei Daten zeigen, zum Beispiel die Anzahl der Monate zwischen jetzt und Ihren Geburtstag

Datepart

Gibt eine ganze Zahl mit dem angegebenen Teil eines gegebenen enthält

Datum - zum Beispiel eine Tagesdatum des Jahres

DatSeriell

Wandelt ein Datum mit einer Seriennummer

DatWert

Wandelt einen String in ein Datum

Tag

Gibt den Tag des Monats von einem Datumswert

Dir

Gibt den Namen einer Datei oder eines Verzeichnisses, das einem Muster entspricht

Erl

Gibt die Zeilennummer, die einen Fehler verursacht

sich irren

Liefert die Fehlernummer einer Fehlerbedingung

Fehler

Gibt die Fehlermeldung, die eine Fehlernummer entspricht

Exp

Liefert die Basis des natürlichen Logarithmus (e) zu einer Potenz erhoben

FileLen

Gibt die Anzahl von Bytes in einer Datei

Fix

Gibt den ganzzahligen Teil der Zahl

Format

Zeigt einen Ausdruck in einem bestimmten Format

GetSetting

Gibt einen Wert aus der Windows-Registrierung

Verhexen

Konvertiert von dezimal in hexadezimal

Stunde

Gibt die Stunden Teil einer Zeit

Eingabefeld

Zeigt ein Feld einen Benutzer zur Eingabe aufzufordern

InStr

Gibt die Position einer Zeichenfolge innerhalb einer anderen Zeichenfolge

Int

Gibt den ganzzahligen Anteil einer Zahl

IPmt

Gibt die Zinszahlung für eine Rente oder Darlehen

IsArray

Gibt True zurück, wenn die Variable ein Array ist

IsDate

Gibt True zurück, wenn ein Ausdruck ein Datum ist

Ist leer

Gibt True zurück, wenn eine Variable nicht initialisiert wurde

IsError

Gibt True zurück, wenn ein Ausdruck ein Fehlerwert ist

Wird vermisst

Gibt True zurück, wenn ein optionales Argument nicht an eine Prozedur übergeben wurde

Ist Null

Gibt True zurück, wenn ein Ausdruck keine gültige Daten enthält

IsNumeric

Gibt True zurück, wenn ein Ausdruck kann als Zahl ausgewertet werden

IsObject

Gibt True zurück, wenn ein Ausdruck ein OLE-Automation-Objekt verweist

LBound

Gibt den kleinsten Index für eine Dimension eines Arrays

LCase

Gibt einen String in Kleinbuchstaben umgewandelt

Links

Gibt eine bestimmte Anzahl von Zeichen von links eines Strings

Len

Gibt die Anzahl der Zeichen in einer Zeichenfolge

Log

Gibt den natürlichen Logarithmus einer Zahl zur Basis e

LTrim

Gibt eine Kopie einer Zeichenkette mit beliebigen führenden Leerzeichen entfernt

Mittel-

Gibt eine bestimmte Anzahl von Zeichen aus einer Zeichenfolge

Minute

Gibt den Minutenteil eines Zeitwerts

Monat

Gibt den Monat aus einem Datumswert

MsgBox

Zeigt ein Meldungsfenster und (optional) einen Wert

Jetzt

Gibt das aktuelle Systemdatum und -zeit

RGB

Gibt einen numerischen RGB-Wert einer Farbe darstellt

Recht

Gibt eine angegebene Anzahl von Zeichen von rechts eines Strings

Rnd

Gibt eine Zufallszahl zwischen 0 und 1

RTrim

Gibt eine Kopie einer Zeichenkette, mit der nachgestellten Leerzeichen entfernt

Zweite

Gibt den Sekundenteil einer Zeitwert

sgn

Gibt eine ganze Zahl, das ist eine Zahl Zeichen zeigt

Schale

Führt ein ausführbares Programm

Sünde

Gibt den Sinus-Zahl

Raum

Gibt einen String mit einer bestimmten Anzahl von Räumen

Sqr

Gibt eine Quadratwurzel der Anzahl

Str

Gibt eine String-Darstellung einer Zahl

StrComp

Gibt einen Wert, der das Ergebnis eines String-Vergleich

Schnur

Gibt eine sich wiederholende Zeichen oder eine Zeichenkette

Bräunen

Gibt eine Zahl der Tangente

Zeit

Gibt die aktuelle Systemzeit

Timer

Gibt die Anzahl der Sekunden seit Mitternacht

Timeserial

Gibt die Zeit für eine bestimmte Stunde, Minute und Sekunde

Zeitwert

Wandelt einen String in einer Zeit, Seriennummer

Trimmen

Gibt einen String ohne führende oder nachgestellte Leerzeichen

Type-Name

Gibt eine Zeichenfolge zurück, die eine variable Datentyp beschreibt

UBound

Gibt den größten verfügbaren Index für ein Array der Dimension

UCase

Wandelt einen String in Großbuchstaben

Val

Gibt die Zahlen in einem String enthalten

VarType

Gibt einen Wert einer Variablen Subtyp angibt

Wochentag

Gibt eine Zahl mit einem Tag der Woche darstellt

Jahr

Gibt das Jahr von einem Datumswert

Menü