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

Genutzten Datenbereich finden

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit UsedRange lässt sich in VBA zuverlässig der jeweilige Bereich einer Tabelle finden, der überhaupt Daten enthält. Das erspart langwierige Schleifen.

Transkript

Wenn ich in diesem Dialog Adressen auswählen will, muss ich sie erst mal finden und anzeigen. Fangen wir vielleicht mit dem zweiten Teil an, mit dem Anzeigen. Also da oben sollte ein Label stehen, egal wie breit, kommt erstmal nicht drauf an. Das wird "lblAdressen" heißen. Es wird, Doppelklick, nicht "Opaque", sondern "Transparent" sein. "StyleNone" ist schon und die Caption ist egal, die wird sich nämlich ändern. Es kann ein Raster kürzer sein und ist soweit schon mal fertig. Da drunter kommt eine Listbox, also anklicken und hier entsprechend aufziehen, Größe weiß ich noch nicht, kommt jetzt nicht so drauf an. Ich mache sie erst mal gleich breit. Und die heißt entsprechend "lstAdressen". Die ungarische Notation verrät mir also schon: "lst", das ist ein kleines L: Ich bin eine Listbox. Mehr braucht die noch nicht, zu können. Die wird auch längere Zeit noch leer sein. Aber, wann immer ich was finde, kann ich das da schon mal reinschreiben. Fangen wir ruhig damit schon mal an, wie viele Adressen ich eigentlich gefunden habe. Also, im "UserForm-Initialize ()", Doppelklick hier, kann ich, nachdem ich das Label gefüllt habe, zum Beispiel schreiben, ich mache das schon mal so: "With me.lstAdressen", "End With", weil ich schon ahne, dass da mehr zusammen kommt, kann ich schon mal sagen, ich möchte "me.Adressen" in die ".Caption" reinschreiben, denn dafür brauche ich dieses "with", denn "=.ListCount &", die Anzahl der Zeilen, und dann schreibe ich dahinter "Adressen:", das steht dann da drüber. Einmal "Speichern", einmal F5 und Sie sehen, es steht noch nichts drin, also "0 Adressen:" Das soll erstmal soweit reichen, denn bevor ich Adressen da anzeigen kann, muss ich sie erst mal finden. Wenn ich mit Alt+F11 in die Tabelle gehe, kann ich Ihnen jetzt schon verraten, die Technik, um das zu finden, wird "UsedRange" benutzen und "UsedRange" ist im Moment das. Ich muss also später abziehen, so dass nur die Daten übrig bleiben, aber wir können erst mal auf "UsedRange" zurückgreifen, und uns dann so dranhangeln. All das geschieht im "UserForm_Initialize", also hier wo nichts ist, ein Doppelklick, und bevor ich jetzt hier die Adressen anzeige, muss ich den Bereich finden. Ein Bereich heißt, ich brauche ein Range-Objekt, also "dim rngAdressen As", nennen wir das mal "Range". Da können wir ein bisschen Platz sparen und hier kann ich jetzt "set rngAdressen", denn "rngAdressen"' ist ja ein Objektdatentyp, also ein "set" davor, und da ich schon weiß, wo die stehen, nämlich in der Tabelle, die diesen, Achtung diesen, Codename nennt sich das, die diesen Codename "tblAdressen" benutzt, kann ich auf das Objekt direkt zugreifen ["=tblAdressen"], und der kennt deswegen auch seinen ".UsedRange". Soweit so einfach, vorübergehend werde ich jetzt erstmal ein "rngAdressen.Select" machen, so dass ich auch anschließend sehe, was ich ausgewählt habe und wo wir gerade dabei sind, können wir hier mit ".AddItem" auch diesen Wert anzeigen lassen. Also "rngAdressen.Adresslocal", aber zwei D und ein R, "Addresslocal" wird also hinzugefügt. Damit das vernünftig ist, muss es natürlich andersrum sein. Ich kann nicht erst die Anzahl fragen und dann was hinzufügen mit ".AddItem", dann hätte da trotzdem 0 gestanden. Das ist jetzt ein sprachliches Problem. Ich will ja eigentlich Postadressen haben und sehe jetzt hier Excel-Adressen, aber das ist ja auch nur vorübergehend, "Gespeichert" "Debuggen" "Kompilieren" und mit F5, dann sehen Sie jetzt erstens von A1 bis H10 und das ist im Hintergrund hier auch schon markiert. Also, mein Anfang würde korrekt finden, bis wohin die Zellen hier laufen. Also diesen Bereich und zwar auch dann, wenn ich was dazuschreibe, aber es ist oben noch zuviel. Ganz entsetzlich sind Makros die ich immer wieder sehe, die einfach in der Spalte A zellenweise soweit nach unten laufen, bis sie die erste Zelle entdecken, in der nichts steht. Das ist nicht nur höllen-langsam, das ist so unglaublich langsam, dass es weh tut, sondern es ist auch hoch riskant, es kann ja mal sein, dass, wie hier, Lücken dazwischen sind. Gibt es auch oft in Tabellen. Also, fangen Sie das gar nicht erst an. Es ist nicht nur falsch, sondern auch langsam. Dafür gibt es UsedRange und mit ".UsedRange", dann kann das Select jetzt wieder weg, finden wir erstmal den richtigen Bereich. Jetzt muss es nur im nächsten Schritt dahin gehen, dass ich von da oben abziehen kann, was ich nicht haben will.

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!