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

Excel 2016 VBA für Profis

In Bereichsnamen kopieren

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Ein Bereichsname beschreibt eindeutig und vor allem dateineutral, in welche Zelle der Zieldatei die Adresse eingefügt werden soll.

Transkript

Nachdem die Zwischenablage nun funktioniert, möchte ich mich mit den beiden Dateien beschäftigen. Und zwar sowohl mit den bereits geöffneten, als auch mit denen, die noch geschlossen sind und dann geöffnet werden müssen. In beiden soll die Adresse direkt hinein geschrieben werden, und damit ich weiß wo, mache ich das über "Bereichsnamen". Also in Excel werde ich jetzt testweise einfach erst mal eine neue Datei anlegen, das ist die "Mappe1". Und völlig beliebig -- Die Stelle ist jetzt nicht schön, aber zu mindestens eindeutig -- eine Zelle ausgucken, und diese erhält einen Bereichsnamen. Ich werde das hier eintragen. Das ist am leichtesten. Und der heißt einfach "Adresse". Denken Sie daran, mit "Return" zu bestätigen. Das heißt, eine Datei, in der ich meine Adresse eintragen will, muss diesen Bereichsnamen besitzen. Wenn ich da was reinschreibe, dann wird das in einem hintereinanderweg erscheinen. Sie müssen also, weil das eine mehrzeilige Adresse wird, hier aktivieren. Das entspricht diesem "Zellen formatieren"-Dialog hier, dem "Zeilenumbruch". Geht da oben einfach schneller. Also, hier ist eine mehrzeilige Adresse drin. Im Moment ist das Ganze ungespeichert. Ich färbe das auch mal gelb, und Sätze mich mit dem Cursor woanders hin, damit ich gleich sehe, ob das funktioniert. Und dann kann ich das entsprechend vorbereiten. Also, ich werde mich gleich mit einer geöffneten Datei beschäftigen. Das ist hilfreich, dass ich mir die in einer Variable zwischenspeichere. Also, "dim wbk", denn es ist ja, ein Workbook, und das nennen wir mal einfach: "Ziel as Workbook". Und im Falle der offenen Datei, kann ich jetzt direkt sagen, welches Workbook ich meine. "set wbkZiel=". Und zwar aus der "Workbooks"-Auflistung, diejenige, die den Namen trägt, den ich in der Liste "Ziele" ausgewählt habe. Also, "me.lstZiele", und dort frage ich jetzt die "Column" ab, denn ich will nicht die erste Spalte, die ja auch versteckt ist, abfragen, -- das ginge mit "Value" -- sondern ich will die Zweite. Das ist die, die man ganz vorne sieht. Mit "Column" abfragen. Und die Zweite ist bei einer Null-basierten Auflistung, die mit der Nummer "1". Den Index brauche ich hier tatsächlich nicht, denn es ist die markierte Zeile. Das funktioniert. Und dann hier Klammer zu. Bevor ich da wirklich rein schreibe, mache ich erst mal eine "msgbox". Was ich jetzt hier erwischt habe, also "wbkZiel.Name" sollte mir die gleiche Antwort geben, wie sie im Dialog schon zu sehen ist. Und jetzt mit F5 einfach mal gucken. Ich wähle hier die "Mappe1" aus, und wenn ich auf "OK" gehe, kriege ich die Meldung "Mappe1". Neuer Versuch. Das könnte ein Zufallstreffer sein. Nehmen wir hier diese. Die sollten wir vielleicht sogar ausnehmen, denn das bin ich selber. Also, nach dem "OK" wird die angezeigt. Alles in Ordnung. Wirklich passieren tut ja noch nichts. Ich werde erst mal dafür sorgen, dass die Datei, in der das Makro steht, nicht drin vorkommt. Das ist im "UserForm_Initialize()". Wenn hier die offenen Dateien untersucht werden, dann werde ich genau eine davon ausschließen. Also, "if Workbooks(intZaehler).Name = ThisWorkbook.Name Then" Da habe ich jetzt genau die Eine erwischt. Das muss ich also gleich umdrehen. Es muss < sein, dann spare ich mir ein "Else". Also, nur dann, wenn die hier untersuchte Datei nicht identisch mit meiner eigenen ist, dann soll das aufgenommen werden. Also, na ja, Versuch. Jetzt ist meine eigene Datei hier raus. "Mappe1" steht trotzdem noch drin, und ich kann jetzt hier mit "geöffnete Workbooks" -- gibt im Moment nur eine, die "Mappe1" -- zugreifen. Jetzt kommt die eigentliche Arbeit, nämlich, da was reinzuschreiben. Und das werde ich mehrfach brauchen. Deswegen mache ich mir direkt eine kleine Prozedur. Es gilt nämlich sowohl für Dateien die schon offen sind, als auch welche, die zwar noch geschlossen sind, aber gleich geöffnet werden. Das ist der einzige Unterschied. Ich kann also das Ganze auch anständig mit "private" verstecken. Eine "sub"-Procedure machen. Die nenne ich dann mal einfach "SchreibeInExcelDatei", und der übergebe ich einen Parameter, nämlich diese Datei. Die können wir gerne wieder "wbkZiel as Workbook" nennen. Auch wenn Sie das Gefühl haben, die habe ich doch gerade deklariert, nein, haben Sie nicht. Dieses ist eine lokale Variable, die nur innerhalb dieser Prozedur gilt. Dieses ist eine völlig andere lokale Variable, die zufällig hier als Parameter organisiert ist, die nur in dieser Prozedur gilt. Auch wenn Sie die gleiche übergeben, -- genauso wird es nämlich passieren. -- mit "SchreibeInExcelDatei" Steuerung-Leertaste zum ergänzen. Und jetzt übergebe ich "wbkZiel". Das ist die lokale Variable von hier, deren Inhalt -- genauer gesagt, deren Referenz, aber das ist egal, -- hier übergeben wird. Und hier ist es eine andere Variable. Die Übergabe ist zufällig der gleiche Name, aber die sind unabhängig. Und hier kann ich jetzt sagen, mit dieser Datei, dort drin muss es in der "Names"-Auflistung, in den Bereichsnamen eingeben, der heißt "Adresse", und dessen Bereich hätte ich gerne, "RefersToRange" und dessen "Value". Und da möchte ich was reinschreiben. Und da ich mich ja im Code immer noch in dem Formular befinde, kann ich direkt auf "me.lblDetails.Caption" zugreifen. Und da die möglicherweise gerade nicht aktiv ist, werde ich dafür sorgen, dass die auch mit "Activate" direkt nach vorne kommt. Es kann ja natürlich passieren, dass es diesen Namen nicht gibt, deswegen mache ich hier vielleicht ein "On Error Resume Next", und prüfe, ob der Fehler vielleicht "<0" ist. Dann hatte ich ein Problem. Und dann kann ich in irgendeiner Form reagieren. Ich könnte dann, zum Beispiel, einfach an die Cursor-Position schreiben. Das ist riskant. Man weiß ja nicht, wo man gerade steht, aber da ich noch nicht speichere, werde ich das mal einfach so machen. Also "wbkZiel". Da muss ich das "Activate" zuerst machen. "wbk.Activate". Ich ignoriere mal, dass es jetzt zwei Mal stattfindet. Dann gibt es dort eine "Selection" und deren "Value=Me.lblDetails.Caption". Das kann man weglassen. Dann würde ich eventuell noch mal fragen. Da wird mit einfach jetzt zu viel Code und zu viel Fehlerbehandlung. Und hier würde ich noch mal "Err.Clear" einbauen, damit zur Not ein neuer Fehler bemerkt wird. Also, "on error goto 0". Damit kann übrigens "Err.Clear" wieder entfallen. Das wird bei der Gelegenheit automatisch gemacht. Dürfen Sie also nie vor der Abfrage der "Err.Number" machen. Dann "Debuggen" "Kompilieren", F5. Und ich versuche mal in die "Mappe1" reinzuschreiben. Und mit dem "OK" -- da muss ich jetzt nur wieder rüber zu Excel. Haben Sie vielleicht schon gesehen -- da steht korrekt die Adresse. Wenn es den Bereichsnamen nicht gegeben hätte, hätte er hier hingeschrieben, und wenn Sie hier noch mal gucken, die steht im Moment auf "Unten ausrichten". Die sieht vielleicht schöner aus, wenn sie nach oben ausgerichtet wird. Theo Testinghoff hat zufällig keine Firma. Da könnte man noch was optimieren, und ein Mal kann ich Ihnen noch zeigen, was passiert, wenn Sie diese Option nicht einschalten. Dann steht das hier nämlich so merkwürdig hintereinander. Die Zeichen sind richtig, nur die Erlaubnis zum Umbruch fehlt, deswegen muss das an sein. Damit ist also die reine Technik sozusagen fertig.

Excel 2016 VBA für Profis

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

5 Std. 52 min (55 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.01.2017

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!