In fast jedem VB-Projekt gibt es ein Modul "Tools" o.ä., das kleine Hilfsfunktionen
enthält, die meist nur wenige Zeilen lang sind, aber das abdecken, was Microsoft
"vergessen" hat oder was unter das Thema "Code-Redundanz" fällt.
Ein Beispiel hierfür ist die dann doch so nützliche Funktion nz, die
zwar im VBA-Sprachumfang vorhanden ist, aber eben nicht in Visual Basic 6. In
diesem Artikel habe ich mal 10 solcher Mini-Funktionen zusammengefasst.
Nz
Diese Funktion gibt bei positiver Prüfung der Eingangsvariable auf NULL oder
<leer> die Ersetzunsgvariable zurück.
Public Function nz(varValue As Variant, varReplace As Variant)
As Variant
If IsNull(varValue) Or varValue = "" Then
nz = varReplace
Else
nz = varValue
End If
End Function
SleepAWhile
Diese Funktion nötigt das System, eine Anzahl von Sekunden die Arbeit einzustellen,
um zum Beispiel sicherzustellen, dass eine SQL-Transaktion abgearbeitet wurde.
Deklarationen:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Funktion:
Public Function SleepAWhile(intSeconds As Integer)
Call Sleep(intSeconds * 1000)
End Function
SelectText
Benutzer sind es gewohnt, dass der Text in einem Textfeld komplett markiert
ist, wenn das Textfeld den Focus erhält. Mit VB-Bordmitteln ist dies nicht zu
bewerkstelligen, aber mit dieser Funktion, wenn Sie in das GotFocus-Ereignis
des Textfelds eingestellt wird.
Public Function SelectText()
On Error Resume Next
Screen.ActiveControl.SelStart = 0
Screen.ActiveControl.SelLength = Len(Screen.ActiveControl.Text)
End Function
IsFormLoaded
Diese Funktion überprüft, ob ein bestimmtes Formular bereits geladen wurde.
Public Function IsFormLoaded(ByVal strFormName As String) As Boolean
Dim i As Integer
For i = 0 To Forms.Count
IsFormLoaded = Forms(i).Name = strFormName
Exit Function
Next
End Function
IsInIDE
Diese Funktion überprüft, ob das Programm über die VB6-IDE oder als kompilierte
EXE gestartet wurde.
Deklaration:
Private Declare Function GetModuleFileName Lib "kernel32" _
Alias "GetModuleFileNameA" ( _
ByVal hModule As Long, _
ByVal lpFileName As String, _
ByVal nSize As Long) As Long
Funktion:
Public Function IsInIDE() As Boolean
Dim strFileName As String
Dim lngCount As Long
strFileName = String(255, 0)
lngCount = GetModuleFileName(App.hInstance, strFileName, 255)
strFileName = Left(strFileName, lngCount)
If UCase(Right(strFileName, 7)) = "VB6.EXE" Then
IsInIDE = True
End If
End Function
SplitEx
Die normale Split-Funktion zerlegt einen String anhand eines Delimiters.
Diese Funktion hier zerlegt ihn anhand einer Schrittweite. Der Rückgabewert
ist, wie beim Original, ein Array.
Public Function SplitEx( _
ByVal strIn As String, _
ByVal intCharCount As Integer) As String()
Dim arr() As String
Dim i As Integer
Dim j As Integer
ReDim arr(0)
For i = 1 To Len(strIn) Step intCharCount
arr(j) = Mid(strIn, i, intCharCount)
ReDim Preserve arr(UBound(arr) + 1)
j = j + 1
Next
ReDim Preserve arr(UBound(arr) - 1)
SplitEx = arr
End Function
TrimNull
Viele API-Funktionen geben Strings fester Länge zurück, wobei der nicht benötigte
Platz mit NullChars aufgefüllt sind. Diese Funktion schneidet diese NullChars
wieder ab.
Public Function TrimNull(strValue As String) As String
Dim arr() As String
arr = Split(strValue, vbNullChar)
TrimNull = arr(0)
End Function
String2Date
Manchmal kann es vorkommen, gerade im Umgang mit Datenbanken, dass ein Datum
ohne Trennzeichen zurückgeliefert wird. Diese Funktion setzt sie wieder ein.
Public Function String2Date(ByVal strIn As String) As String
If Len(strIn) = 6 Then
String2Date = Left(strIn, 2) & "." & Mid(strIn, 3,2) & "." & Right(strIn, 2)
ElseIf Len(strIn) = 8 Then
String2Date = Left(strIn, 2) & "." & Mid(strIn, 3,2) & "." & Right(strIn, 4)
ElseIf Len(strIn) = 10 Then
String2Date = strIn
End If
End Function
AscEx
Die ASC-Funktion schlägt fehl, wenn der übergebene String leer ist. Diese
Funktion behebt das Problem.
Public Function AscEx(ByVal strChar As String)
If strChar = "" Then
AscEx = 0
Else
AscEx = Asc(strChar)
End If
End Function
ValueGreaterNull
Verstecken sich Zahlen in String-Variablen, kann man mit dieser Funktion
überprüfen, ob der Wert numerisch größer Null ist.
Public Function ValueGreaterNull(ByVal strValue As String) As
Boolean
If Len(Trim$(strValue)) > 0 Then
If IsNumeric(strValue) Then
If CDbl(strValue) > 0 Then
ValueGreaterNull = True
End If
End If
End If
End Function