Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Excel 2013 VBA für Profis

In die Zwischenablage kopieren

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mit dem passenden Steuerelement können Sie die Daten durch einen einzigen Befehl mühelos in die Zwischenablage kopieren.

Transkript

Der Dialog sieht jetzt eigentlich schon relativ gut aus, kann hier eine Quelle lesen, kann hier verschiedene Ziele anbieten. Jetzt wird es so langsam Zeit, auch mal zu reagieren. Das heißt, wenn ich hier als Ziel die Zwischenablage ausgewählt habe, soll bei OK auch das passieren, also diese Adresse in die Zwischenablage kopiert werden. Dazu können wir es hier ein bisschen hübscher machen. Die erste Spalte wird ausgeblendet, allerdings immer noch zugreifbar. Und ich schreibe dann dahinter einfach in die zweite Spalte den eigentlichen Übersetzungstext, also zu 0 steht da "Zwischenablage", zu 1 "offene Datei" und zu 2 vielleicht "geschlossene Excel-Datei". Also da werden dann auch hier drei Spalten gebraucht, die sind da. Aber die Spaltenbreiten ändern sich so, dass die erste Spaltenbreite 0 wird. Und die zweite, da müssen wir jetzt einfach ein bisschen rechnen. 504 Punkt stehen uns zur Verfügung, also sagen wir ruhig, für die zweite 300 und dann bleiben für die dritte ein bisschen was über 200 übrig. Die brauchen Sie nicht wirklich zu schreiben, die kriegen sowieso den Rest. Und beim UserForm_Initialize, wo ich also hier reinschreibe, was dort steht, ergänze ich das jetzt, dass also hier in der nächsten Spalte; es wird bedeuten, dass aus der 1 eine 2 wird; das Wort "Geöffnete Workbooks" schreibe ich mal ganz deutlich als Unterscheidung. Ein normaler Benutzer möchte das da nicht lesen. Und hier entsprechend "Geschlossene Excel-Dateien". Und natürlich für die Zwischenablage das Gleiche. Da geht es ein bisschen kürzer, weil es sich um die erste Zeile handelt, also (2, 0). Und da steht dann auch einfach: "Zwischenablage", und Gänsefüßchen wieder zu. Gucken wir mal zuerst, wie das aussieht, mit F5. Also die erste Spalte scheint verschwunden. Sie ist aber zugreifbar. Hier steht eventuell Datei- und Pfadname, bei ungespeicherten natürlich nur der Dateiname. Und es kann durchaus sein, das ist nämlich hier der Fall, dass eine Datei doppelt auftaucht, das fange ich jetzt gar nicht ab. Die ist nämlich geöffnet und steht auch gleichzeitig in dem Verzeichnis, in dem sich ja dieses Projekt befindet. Hier ist es jetzt ein bisschen netter formuliert für die Benutzer. Das können Sie beliebig ändern. Und mit dem OK möchte ich jetzt reagieren. Da soll also mehr passieren als einfach nur "Fehlt noch...". Das heißt, im OK muss ich jetzt stattdessen untersuchen, was denn nun markiert ist. das wird ganz klar eine Select-Case-Anweisung sein. Und ich untersuche den Case von der zweiten Liste, also Me.lstZiele, deren Value, das ist der Wert der ersten Spalte, könnte sein Case, und da muss ich jetzt auf die Enumeration zurückgreifen, könnte zum Beispiel sein eine Zwischenablage, oder Case Typ, die Workbooks offen, oder Case Typ, und dann die Datei geschlossen. Sicherheitshalber mache ich immer ein Case Else dran, und natürlich ein End Select. Und dort steht dann MsgBox "Fehler im SelectCase von btnOK_Click!" Das sollte niemand von meinen Benutzern sehen. Und wenn, dann kann er mir genau das sagen, wo ich jetzt ausbessern muss. Fangen wir vielleicht mit der Zwischenablage an, die ist nämlich das einfachste. Dazu gibt es eine fertige Methode, nur leider nicht in einem Label. Ich muss also ein Edit-Feld irgendwo auf diesem Formular unterbringen. Aus der Toolsammlung so ein Edit-Control, das ist hier dieses Textfeld, irgendwo hinlegen. Ist völlig egal, wie es aussieht, wie es heißt. Ich nenne das einfach mal edtZwischenablage. Und damit ich das erkenne, dass das nicht wirklich gilt, mache ich hier die BackColor auf Rot. Und ganz wichtig, die Visible-Eigenschaft, damit man sich das Elend nicht angucken muss, auf False. Das liegt auch gern mal irgendwie so wirklich, knatsch, mittendrin, dann weiß ich, das kann ich nicht ernst meinen. Also ich färbe entweder die Schrift rot oder den Hintergrund rot, dann weiß ich, sowas gibt es in Formularen nicht, das muss unsichtbar sein. Und kann dann im Code, wenn jemand was in die Zwischenablage kopieren will, ganz schlicht das Detail oben rechts aus dem Text holen, da reinschreiben und dann gibt es einen Copy-Befehl. Also With Me.edtZwischenablage, da wird ein bisschen was passieren. Der Value dieses Edit-Feldes enstpricht dem, was in dem lblDetails in der Caption steht. Das ist das erste Umkopieren. Dann muss ich es markieren, das heißt SelStart. Stelle ich auf 0. Und muss es komplett markieren. Also SelLength. Ist so viel, wie da Text drinsteht. Also mit der Len-Funktion lasse ich den Value ausmessen in der Länge. Diese beiden Befehle machen nichts anderes als den Cursor in die erste Position zu bringen und bis zum hinteren Ende zu markieren. Und dann besitzt dieses Kontrollelement einen Copy-Befehl. Und zwar muss ich deswegen ein Edit-Control nehmen, weil ein Label diesen Copy-Befehl gar nicht besitzt. Wenn ich jetzt alles richtig gemacht habe, davon sehen Sie allerdings dann noch nichts, kann ich das anschließend in die Zwischenablage kopieren. Das heißt, ich drücke jetzt einmal F5, markiere irgendeine Adresse, wähle hier Zwischenablage aus. Und nach dem OK scheint nichts passiert zu sein. Aber wenn ich jetzt einen beliebigen Texteditor nehme und dort mit Bearbeiten Einfügen den Text hole, sehen Sie, hat wunderbar geklappt. Es stand in der Zwischenablage. Die Umbrüche sind da. Ich müsste nur vielleicht noch eine Meldung machen. Das ist einfach netter. Wenn nichts passiert, wundert sich so ein Benutzer sonst. Also hier vielleicht eine MsgBox. Text, oder besser gesagt die "Adresse wurde in die Zwischenablage kopiert." vbInformation macht sich gut und ein p_cstrAppMeldung. Dafür könnte man jetzt die Meldung einsetzen. Also nochmal mit F5 getestet. Eine beliebig Adresse in die Zwischenablage. Und nach dem OK kommt dann hier ein netterer Text, den ich auch noch richtig schreiben kann. Und damit ist das erste von den Zielen auch schon erledigt. Sie können etwas in die Zwischenablage kopieren. Und im Grunde; ich mache aus optischen Gründen jetzt einen Abstand; haben Sie damit für alle Programme schonmal was bereitgestellt. Aber für Excel-eigene kann man es noch ein bisschen verbessern.

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!