Tipps für Excel-VBA

Soweit keine Einschränkungen dazu genannt werden, gelten diese Tipps & Tricks für alle Versionen von Excel. Auch wenn es aus historischen Gründen tatsächlich XL4-Makros gibt, die in speziellen Tabellen gespeichert waren, sind hier in diesem Zusammenhang mit "Makros" immer nur VBA-Programme gemeint.

Tipps zu VBA, die für alle Office-Programme gelten, finden Sie bei "VBA allgemein". Wenn in den folgenden Erläuterungen Texte wie MsgBox formatiert sind, handelt es sich um konkret einzugebende Inhalte wie VBA-Code oder die Eingabe von Werten. Menüs wie Datei Speichern sind wie hier zu sehen formatiert. Schaltflächen oder Registerkarten auf Dialogen werden wie Menüs behandelt.

Alle Tipps sind nach bestem Wissen geprüft, aber selbstverständlich ohne Gewähr. Sollten Sie doch einen Fehler darin entdecken, würden wir uns freuen, wenn Sie uns per eMail Bescheid sagen.


Funktion beim Neuberechnen aktualisieren lassen + neu

Zellen-Datum wird in VBA falsch ermittelt +

Makros in anderen Dateien aufrufen: mit Verweis (1) +

Makros in anderen Dateien aufrufen: ohne Verweis (2) +

A1- oder Z1S1-Schreibweise +

Formeln einfügen +

Welche Excel-Version hat die Datei? +

Tabelle löschen ohne Warnmeldung +

Tabellenblatt nur mit Bedingung öffnen +

Kommentare bearbeiten +

Dateinamen ermitteln -

Es ist schon ein bißchen peinlich, dass gerade beim Aufruf einer Windows-Funktion, nämlich dem Anzeigen des DateiÖffnen- oder DateiSpeichernUnter-Dialogs jedes MS-Office-Programm sein eigenes VBA-Süppchen kocht. Dabei müßte eigentlich nur der systeminterne API-Befehl weitergereicht werden. Immerhin gibt es bei Excel (anders als bei den anderen) zwei fertige Funktionen, die das machen, auch wenn die so gut versteckt sind, dass man sie eher zufällig entdeckt.

Um eine vorhandene Datei auswählen zu können, existiert die GetOpenFileName-Funktion, die jedoch im Gegensatz zu praktisch allen anderen Funktionen immer mit ihrem Elternobjekt Application zusammen genutzt werden muss:

Sub DateiEinzelAuswahl()
Dim varDatei As Variant
 
varDatei = Application.GetOpenFilename("Excel-Arbeitsmappen,*.xls," & _
"Alle Excel-Dateien,*.xl?", 2, "Bitte wählen Sie eine Datei aus!")
If varDatei = False Then
MsgBox "Sie haben abgebrochen."
Else
MsgBox "Sie haben '" & varDatei & "' ausgewählt."
End If
End Sub

Die Variable varDatei für den Dateinamen muss vom Datentyp Variant sein, weil beim Abbruch des DateiÖffnen-Dialogs der Wert False zurückgegeben wird, was in der Bedingung geprüft wird.

Der erste Parameter der GetOpenFileName-Funktion gibt die Filterliste an, wobei immer abwechselnd ein beliebiger Text und ein Filter mit Jokerzeichen durch Kommata getrennt wird. Wenn Sie einen Filter aus der Liste vorbesetzen wollen, geben Sie als zweites Argument dessen Index an, der hier ausnahmsweise mal mit 1 beginnt. Das dritte Argument erlaubt es, den Titel des Dialogs zu öffnen. Die Beschriftung der Öffnen-Schaltfläche lässt sich nur auf dem Mac ändern, unter Windows wird es ignoriert.

Auch wenn der DateiÖffnen-Dialog täuschend echt aussieht: er öffnet nicht und soll das auch nicht. Er ist lediglich eine systemkonforme Methode, auf eine Datei zu zeigen und dabei beispielsweise auch Pfad und Laufwerk wechseln zu können. Was Sie anschließend mit der Datei machen, regelt Ihr VBA-Code, hier wird nur ein gültiger Name samt Pfad von einer garantiert vorhandenen Datei ermittelt.

Wie Sie vielleicht am nächsten, hier noch nicht benutzten Parameter MultiSelect schon gesehen haben, lassen sich damit auch mehrere Dateien gleichzeitig auswählen, indem Sie True angeben:

Sub DateiMehrfachAuswahl()
Dim varDatei As Variant
Dim strDateien As String
Dim i As Integer
 
varDatei = Application.GetOpenFilename("Excel-Arbeitsmappen,*.xls," & _
"Alle Excel-Dateien,*.xl?", 2, "Bitte wählen Sie eine Datei aus!", , True)
If IsArray(varDatei) Then
For i = 1 To UBound(varDatei)
strDateien = strDateien & varDatei(i) & vbCrLf
Next
MsgBox "Sie haben diese Dateien ausgewählt:" & vbCrLf & strDateien
Else
MsgBox "Sie haben abgebrochen."
End If
End Sub

Alternativ zu dem ersten Beispiel können Sie die Variable varDatei auch daraufhin prüfen, ob sie ein Array enthält, denn nun werden alle ausgewählten Dateien in einem solchen übergeben. Auch hier folgt in einer MsgBox lediglich die Namensliste, ohne dass eine der Dateien geöffnet würde.

Während der DateiÖffnen-Dialog sicherstellt, dass es diese Datei auch gibt, erlaubt der DateiSpeichernUnter-Dialog im Gegenteil, einen neuen Dateinamen vorzugeben. Eigentlich sollte er auch überprüfen und warnen, wenn der Dateiname schon existiert, aber das ist bei GetSaveAsFilename nicht der Fall:

Sub DateiSpeichernUnter()
Dim strDatei As String
Dim strVorschlag As String
 
strVorschlag = "Beispiel" & Format(Now(), "yyyy_MM_dd") & ".xls"
strDatei = Application.GetSaveAsFilename(strVorschlag, _
"Excel-Dateien,*.xls", 1, "Daten sichern")
MsgBox "Diese Datei soll als '" & strDatei & "' gesichert werden."
End Sub

Das Prinzip der Filter funktioniert genauso, aber es gibt zusätzlich die Möglichkeit, einen Dateinamen vorzugeben, wie es hier gezeigt ist.

Um den Pfad zu beeinflussen, der beim Öffnen der Datei-Auswahldialoge angezeigt wird, können Sie die "MSDOS-Befehle" ChDrive und ChDir einsetzen, die auch in VBA entsprechend heißen.

Blätter verstecken +

Erste Zeile eines Bereichs markieren +

Bereich ohne erste Zeile markieren +

Löschen in Zellen +

Bereichsnamen zuweisen (1): Bereich +

Bereichsnamen zuweisen (2): Adresse +

Zellen des Bereichsnamens markieren +

Bereichsnamen löschen +


Der zuletzt angesehene Tipp war übrigens 'Excel-VBA: Dateinamen (link)', angeklickt am 08.09.2010 19:40:47. Möglicherweise ist dieser Tipp für Sie auch interessant?



© 2006-2010 Lorenz Hölscher/CLS Software-Service GbR, Aachen
Wir behalten uns das Recht vor, Änderungen oder Ergänzungen der auf dieser Website bereitgestellten Informationen vorzunehmen. Die Inhalte und die Gestaltung der Seiten sind urheberrechtlich geschützt. Eine Übernahme von Inhalten oder Elementen oder die Vervielfältigung ist nur mit vorheriger schriftlicher Einwilligung von CLS Software-Service GbR erlaubt.
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen wir keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
Stand: Samstag, 28. August 2010
URL: www.cls-software.de/cls_software/TippsExcelVBA.aspx
nach oben an den Anfangnach oben an den Anfang

Login-Name:
Aktuelle Seite: CLS/Tipps: Excel-VBA
Sie sind hier: Skip Navigation LinksHome : Tipps & Tricks : Excel : Excel-VBA
Infos über die Site
Skip Navigation Links.


 
Infos überall
Suchen mit:




 
Infos über Sie
IP-Adresse: 38.107.191.89
Browser: Unknown 0.0
JavaScript-Version: 0.0
Betriebssystem: Unknown
Session-ID: tw3d1255bknmlgfzhx3yw2r2
 
Infos über uns
Lorenz Hölscher und Christa Siebes
CLS Software-Service GbR,
52066 Aachen

Mehr Info: siehe Kontakt
Mehr Daten: siehe Impressum

Das Handbuch:
Access 2010

Cover Handbuch Access 2010

Richtig einsteigen:
Access 2007       Access 2010

Cover Richtig einsteigen Access 2007       Cover Richtig einsteigen Access 2007 VBA

Richtig einsteigen:
Access 2007-VBA     Access 2010-VBA

Cover Richtig einsteigen Access 2010       Cover Richtig einsteigen Access 2010 VBA

Richtig einsteigen:
Word 2007-VBA

Cover Richtig einsteigen Word 2007 VBA

 
Infos über Partner-Firmen