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.
Menu
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 |