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 2016 VBA für Profis

Adressenbereich finden

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Aus dem Tabellenbereich, der Daten enthält, muss der Code nun nur den von Adressen belegten Teilbereich ermitteln. Das gelingt recht einfach anhand der markierten Titelzeile.

Transkript

Im Moment ist es so, dass ich sozusagen nur unscharf den "Usedrange" ermittle. "Usedrange", wenn ich das noch mal in echt zeige, ist ja hier dieser Bereich. -Ich muss ihn von rechts unten markieren, weil da oben so ein Logo in der Ecke ist.- Ist der Bereich, von dem Excel weiß, dass da Daten drin stehen, oder schon mal drin standen, auch das hier gilt als Datenwert. Das ist aber zu viel des Guten, ich will den tatsächlich drei Zeilen tiefer haben, dann wäre er hier, und drei Zeilen kürzer. Und diese Drei weiß ich deswegen, weil die Titelzeile in der Zeile drei steht. Das ist der Bereich, um das ich das verschieben muss, und die will ich natürlich nicht hart codieren, ich will nicht im Code eine Drei schreiben sondern ich will das raus kriegen. Und das geht ganz einfach, weil ich hier einen Bereichsnamen hinterlegt habe, der heißt "Titelzeile". Der benutzt die gesamte Zeile drei, und zwar absichtlich die Überschrift, die Titelzeile, ich hätte auch diese hier als erste Datenzeile nehmen müssen, aber wenn Sie mal umsortieren, dann ändert sich das dann mit, das hätte böse ins Auge gehen können, also deswegen ausdrücklich die Titelzeile, und deren Zeilennummer sagt mir, in welcher Zeile sie sich befindet, und um wie viel ich das also verschieben muss. Wenn ich jetzt wieder zurück in den Code wechsle, brauche ich also z. B. die Möglichkeit, mir diese Zahl zu merken. Ich mach' daraus, Sie sehen das schon am Präfix eine "Longzahl", eine Longvariable, das ist deutlich übertrieben, wahrscheinlich würde sogar "byte" reichen. Aber lieber einmal zu groß dimensioniert, als zu klein, und ganz ehrlich, das braucht ein bisschen mehr Speicherplatz, aber gemessen an dem, was ein laufendes Windows, ein laufendes Access, und die ganzen Dienste, die sonst noch an sind, schon verbrauchen, ist eine einzige Longvariable nicht der Rede wert. Also hier z. B. dazwischen ermittle ich mal, welchen Wert diese hat, da brauche ich die Names-Auflistung, theoretisch gibt es die auch hier. Tatsächlich führt das zu einem merkwürdigen Laufzeitfehler, deswegen müssen sie, obwohl das nicht ganz nachvollziehbar ist, basierend auf der Application, aber wie immer mit Doppel -P-, basierend auf der Application die Names-Auflistung benutzen. Eigentlich sind die Bereichsnamen, nicht im Besitz von Excel, sondern bestenfalls von einem Workbook, aber das funktioniert an dieser Stelle nicht anders, also den Bereichsnamen "Titelzeile", den frage ich nach seinem Bereich, vergesse ich auch immer wieder gerne, "RefersToRange" sonst habe ich nämlich nur den Bereichsnamen, und dessen Bereich hat eine "Row". Schöner wäre, wenn hier "RowNumber"stünde, denn gemeint ist hier im Singular wirklich nur die Zeilenzahl. Dieses ist das Objekt mit allen Zeilenobjekten drin, dieses ist eine Zahl. Und die will ich haben, denn dann kann ich hingehen, und mit "set rngAdressen = rngAdressen.Offset" der neue Wert ist wie der alte, mit einem "Offset" dabei, nämlich "RowOffset", verschoben um, "LongTitelZeile", positiver Wert verschiebt nach unten, aber ",0" als "ColumnOffset", keine Spaltenverschiebung. Und damit wir sehen, ob das auch geklappt hat, kommt hier schon mal ein "Select" dahinter, speichern und "Debuggen" "Kompilieren", dann mit F5 laufen lassen. Und sie sehen jetzt erstens hier die Adresse, das ist wegen des Grautons dann nicht ganz eindeutig zu erkennen vielleicht, aber sie sehen's ja an der Umrahmung hier, der Bereich ist verschoben, aber noch um drei Zeilen zu lang. Ich klick mal wieder irgendwo hin, damit das deutlich wieder neu anfängt. Ich muss also jetzt, Doppelklick hier um in die "Initialize" zu kommen, ich muss jetzt also hier außer dem "Offset" noch ein "Resize" machen. Also wieder "set rngAdressen = rngAdressen." Sie können das übrigens, wenn sie Spaß daran haben, hier direkt mit "Resize" hinten dran schreiben, wirkt aber unübersichtlich; so ist es leichter zu prüfen. Also "Resize", "Resize" möchte keine Differenz wissen, um die das verkleinert oder vergrößert werden soll, sondern ein Ergebnis. Ich muss also fragen, welche Vorherwerte habe ich, und was will ich davon abziehen, den Vorherwert fragen wir den, der es kennt, nämlich "rngAdressen.Rows", jetzt den Plural, weil ich die "Count"-Angabe brauche, minus die Differenz, die ich da haben will. Eigentlich würde ich jetzt "ColumnSize" weglassen, so wie vorher, aber ich werde die Breite dessen, was ich da auslesen möchte mal explizit begrenzen, nämlich auf die ersten vier Spalten, und Klammer wieder zu. Das "Select" ist noch drin, also wir können direkt speichern, Kompilier-checken und mit F5 starten. Es geht also von A4 - das sieht gut aus- bis nur noch Zeile 9, und zwar auch nur nach Spalte D, sie sehen's jetzt also hier parallel. Hier ist der Bereich, den ich tatsächlich nachher in der Liste darstellen will. Mit wenigen Zeilen sehen Sie hier, haben Sie sicher und neutral ermittelt, wo sich die eigentlichen Daten befinden. Sie müssen weder den Benutzer was markieren lassen, noch irgendwo im Code hinterlegen, in welcher Zeile es anfängt, Sie haben bestenfalls Bereichsnamen, und die sind flexibel, wenn Sie nämlich später mal was, hier beispielsweise eine neue Zeile einfügen, dann wandert der Bereichsname auch nach unten. Also der - ich sag mal- wichtigste Schritt ist eigentlich geschafft; wir haben im Code, das "Select" können wir jetzt wieder rauskommentieren, wir haben im Code exakt herausgefunden, wo sich die Adressen befinden werden.

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!