Microsoft Office Tutorials and References
In Depth Information
19.12.2 Funktionen und Prozeduren
rechnungen, kann aber auch für Aktionen benutzt
werden, in denen Objekte aus den Bibliotheken verwendet
werden.
’ Prüfen, ob Blatt existiert
TabExist = False
For Each Tabelle In Sheets
If Tabelle.Name = bname Then TabExist = True
Next Tabelle
If TabExist = False Then
TabEraser = "Tabellenblatt " _
& vbCr & "<“ & bname & ">“ _
& vbCr & "fist nicht in der Arbeitsmappe!“
Exit Function
End If
’ Fehlerroutine einschalten
On Error GoTo fehler
If modus = True Then
’ Meldungen von Excel ausschalten
Application.DisplayAlerts = False
’ Blatt löschen
lösch = Sheets(bname).Delete
Else
okMsg = MsgBox(löschtext, vbYesNo + vbQuestion,
_
"TabEraser © 2003 Schels“)
If okMsg = vbYes Then
’ Meldungen von Excel ausschalten
Application.DisplayAlerts = False
’ Blatt löschen
lösch = Sheets(bname).Delete
Else
lösch = False
End If
End If
’ Meldungen einschalten
Application.DisplayAlerts = True
’ Funktion beenden
If lösch = True Then
TabEraser = bname & " gelöscht“
Else
TabEraser = bname & " wurde nicht gelöscht“
End If
Exit Function
fehler:
TabEraser = Err.Description
On Error GoTo 0
End Function
Aufruf einer Funktion aus Prozeduren
In den meisten Fällen wird eine Funktion nicht direkt
aufgerufen, sondern einer Variablen zugewiesen. Der
Aufruf einer Funktion würde lauten:
Call funktionsname(argumente)
In diesem Fall hätte die Funktion aber keine Möglichkeit,
einen Wert zurückzuliefern. Deshalb wird die Funktion
mit Zuweisung an eine Variable aufgerufen:
Rückgabewert = funktionsname(argumente)
Praxis: TabEraser löscht Tabellen
Sie finden das Beispiel auf der Buch-CD
unter TabEraser.xlsm .
CD-ROM
Die Funktion kommt dann zum Einsatz, wenn
Berechnungen oder Aktionen immer wieder, aber mit
wechselnden Argumenten benötigt werden. Eine dieser
Aufgaben fist das Löschen von Tabellenblättern. Die
Anweisung dafür lautet:
Sheets("Blattname“).Delete
In Makros hat diese Anweisung mehrere Hindernisse: Die
Löschung muss vom Anwender bestätigt werden, Excel
liefert eine Sicherheitswarnung dazu. Ist die Tabelle nicht
zu finden oder kann sie aus anderen Gründen nicht
gelöscht werden, löst die Codezeile einen Fehler aus.
Schreiben Sie eine Funktion, die Sie in allen
Makroprozeduren aufrufen können, um eine Tabelle zu löschen.
Als Argumente geben Sie der Funktion den Namen des
Blattes und einen Modus, der bestimmt, ob eine
Sicherheitsmeldung angezeigt wird oder nicht. Die Meldungen
werden von der Funktion abgefangen, Sie können
eigene Meldungen für alle Varianten der Aktion definieren.
Function TabEraser(bname As String, modus As
Boolean) As String
Dim lösch As Boolean, löschtext As String, okMsg
Dim Tabelle, TabExist As Boolean
löschtext = "Wollen Sie das Tabellenblatt " _
& vbCr & "<“ & bname & ">“ _
& vbCr & "löschen?“
Listing 19.46 Die Funktion TabEraser löscht Tabellen ohne Rück-
frage.
 
Search JabSto ::




Custom Search