Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel 2013 VBA für Profis

Einfügetypen vorbereiten

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Weil der Code mit den verschiedenen Möglichkeiten des Einfügens einfach umgehen können soll, setzen Sie dafür einen Enumeration-Typ ein.

Transkript

Das Formular oder der Dialog, wie immer Sie das gerade nennen, kann jetzt schon die Quellen ermitteln, nämlich welche Adressen soll ich übernehmen. Aber es fehlt noch das Ziel, oder besser gesagt die Ziele. Denn natürlich können wir hier ein bisschen flexibler reagieren. Theoretisch könnten Sie einfach sagen, mit dem OK wird das Ergebnis in die Zwischenablage geschrieben und jedes andere Programm kann sich das da immer abholen. Ein bisschen netter ist aber, wenn Sie direkt sagen, entweder in die Zwischenablage oder direkt in irgendeine geöffnete Datei, oder meinetwegen sogar in eine noch zu öffnende Datei aus einem bestimmten Verzeichnis. Also ich will Ihnen verschiedene Wege aus dem Dialog, nämlich verschiedene Ziele zeigen. Und da geht es dann auch unter anderem drum, mit welchen Steuerelementen das eigentlich gemacht wird. Meine Empfehlung an der Stelle, Sie werden mehr als drei Ziele haben. Theoretisch natürlich nur Zwischenablage, geöffnete Excel-Datei, geschlossene Excel-Datei. Aber die können Sie direkt namentlich nennen. Sie können eine Auflistung aller geöffneten Dateien anbieten. Und schon haben Sie mehr als drei Möglichkeiten. Das heißt, automatisch keine Option Buttons, Optionsschaltfläche oder ähnliche Späßchen, sondern direkt eine Liste. Wir brauchen also eine zweite Liste wie diese. Und vermutlich auch ein bisschen Platz. Das können wir hier schonmal ein bisschen berücksichtigen, also das ein wenig nach unten schieben. Und wie hier auch aus der Toolsammlung ein ListBox-Element. Ich lege das mal in voller Breite daneben. Und das kriegt schonmal den passenden Namen: lstZiele. Das ist einen Tick zu groß geworden. So. Und das können wir direkt voraussehen, es wird vermutlich 3 Spalten haben, deren Breite mir im Moment, ColumnWidths, egal ist. Das müssen wir mit den konkreten Werten machen. Jetzt geht es darum, hier verschiedene Ziele einzutragen. Und das einigermaßen clever. Ich wechsle also in UserForm_Initialize, dort wird es nämlich direkt passieren. Und möchte hier; das sollte natürlich, lblAdressen, schon irgendwie zu den lstAdressen gehören, also hierhinter. With Me.lstZiele und End With. Da könnte ich jetzt einfach hinschreiben .AddItem "Zwischenablage", .AddItem "offene Excel-Datei", .AddItem "geschlossene Excel-Datei aus einem Verzeichnis" schreibe ich schonmal dazu, dass Sie ungefähr sehen, was es werden soll. Und mit F5 sehen Sie dann, das ist hier eingetragen, die Spalte endet jetzt hier, deswegen fehlt das was, aber es wird sowieso im Endergebnis anders aussehen. Das Problem ist, dass ich anschließend, wenn ich hier einen markiert habe in irgendeiner Form, dass ich dann direkt beim Klick auf OK rauskriegen muss, von welchem Typ war der eigentlich. Es wird nämlich nicht eine offene Excel-Datei geben, sondern fast beliebig viele. Ich kann also nicht einfach fragen, ist es vielleicht die zweite Zeile. Ich muss mir also erstmal eine vernünftige Methode ausdenken, mit Doppelklick wieder zu UserForm_Initialize, um die zu erkennen. So eine vernünftige Methode ist eine Enumeration. Also mit Enum, und dann muss ich mir jetzt irgendwie eine ausdenken. Die heißt zum Beispiel enmTypen, End Enum. Und der erste Typ, das schreibe ich da mir mal kurz davor, ist typZwischenablage. Der zweite ist typ, ich nenne das mal WorkbookOffen. Und typDateiGeschlossen. Die Workbooks-Auflistung enthält ja nur die geöffneten Dateien, aber ich unterscheide dann eben hier ein bisschen deutlicher zwischen den offenen und geschlossenen Dateien. Und dann kann ich nämlich dieser Liste hier in einem zweiten Parameter mitgeben, welchen Typ sie hat. Das kann auch der erste sein, das ist fast egal. Also mit Column die zweite Spalte mit der Nummer 1, und die erste Zeile mit der Nummer 0, ist gleich Enumeration, Punkt, Zwischenablage. Da steckt ja im Prinzip eine Integer-Zahl dahinter. Dann habe ich eine Möglichkeit, herauszukriegen; das kopiere ich jetzt einfach für die nächsten beiden; um welchen Typ es sich handelt, denn es wird bei Gelegenheit eine Schleife werden. Und hier haben wir bereits eine Zeile angelegt, also in der zweiten beziehungsweise dritten Zeile, da ist es dann nicht der Typ Zwischenablage, sondern offene Excel-Datei, ist ein Workbook. Und das war mein DateiGeschlossen. Sieht erstmal sehr ähnlich aus, nur dass jetzt hier Nummern drinstehen. Und wenn ich eine Zeile markiert habe, kann ich im OK diese Nummer abfragen, die ich natürlich bei Gelegenheit noch irgendwo verstecken werde, zum Beispiel in der ersten Spalte, so wie hier auch diese Indexangaben stehen. Das ist erstmal die Vorbereitung, damit ich überhaupt vernünftig damit arbeiten kann. Ich werde also hier sowohl die Nummern als auch dann die konkreten Angaben, um welche Datei oder welches Workbook es sich handelt, irgendwie hinterlegen. Technisch funktioniert es erstmal so weit.

Excel 2013 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2013, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

4 Std. 59 min (53 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!