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

Markierte Adresse auslesen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit einer einfachen Berechnung findet Ihr Code die zugehörige Tabellenzeile mit den weiteren Adressdaten, die zu der markierten Zeile passt.

Transkript

Der Dialog ist so weit fertig, dass er jetzt alle 7 oder auch bei Bedarf nämlich auch vollautomatisch mehr Zeilen der Adressliste anzeigt, aber ausdrücklich nur die ersten 4 Spalten. Das hat auch was mit Geschwindigkeit zu tun. Je mehr Spalten Sie hier eintragen lassen, desto zeitaufwändiger wird diese Ermittlung, und zwar überproportional zunehmend, je mehr Zeilen hier auch stehen. Bei 7 Zeilen werden Sie den Unterschied kaum merken, aber wenn da mal 100, 200 Adressen drinstehen, dann fängt das schon an wehzutun. Der Trick wird also sein, ich werde nur 4 Spalten laden, das was hier auch sichtbar ist. Und wenn ich eine Zeile anklicke, werde ich für diese Zeile weitere Informationen nachladen, nämlich das, was dann hier da hinten, so viel Sie wollen letzten Endes, noch drinsteht. Dann muss ich immer nur auf Klick genau einen Wert nachladen. Und deswegen ist hier noch Platz. Also die Details werden hier untergebracht. Rechnerisch ist das relativ einfach, denn ich habe ja schon rausgefunden, wo mein Bereich der Adressen liegt, was hier schon markiert ist. Wenn ich jetzt hier in die erste Zeile klicke, hat die einen ListIndex von 0, ist eine 0-basierte Auflistung. Ich muss also zu der Zeilennummer 4 den ListIndex der angeklickten Zeile addieren. 4+0, immer einen weniger als hier steht, ist 4. Wenn ich die Reich GmbH anklicke, dann kriege ich einen ListIndex von 4. 4+4 ist 8. Und damit muss ich in der Zeile 8 aus Excel nachlesen. Also relativ einfach. Was ich allerdings noch verbessern muss, ist die Tatsache, dass ich gleich auf diesen Bereich zugreifen will, der allerdings nur lokal deklariert ist. Schlauerweise fange ich nicht in jeder Prozedur neu an, diese Adressbereich zu ermitteln. Das habe ich im UserForm_Initialize, die erste Prozedur, die überhaupt aufgerufen wird, einmal gemacht. Und das wird gleich in den öffentlichen Bereich verschoben, werde das also öffentlich zugänglich machen. Modul öffentlich reicht völlig, also ich werde die Variable hier schonmal entsprechend umbenennen, mit m_rngAdressen. Und hier auch noch, dann haben wir da noch einen und das war es hoffentlich. Das können wir mal eben checken mit Debuggen Kompilieren. Ja. Und jetzt ist es natürlich erst dann sinnvoll, wenn ich es hier ausschneide und dort mit Umschalt+Tab übrigens ausrücke, dort in den öffentlichen Bereich verschiebe. Ich mache hier wieder diesen leeren Kommentar drunter, damit Sie sehen, da ist wirklich ein Unterstrich noch dran. Jetzt hat sich noch nichts geändert, ich wechsle wieder in das Formular, aber jetzt brauche ich das ListBox-Click-Ereignis hierfür. Also ein Doppelklick hier, dann wird das automatisch erzeugt. Und kann dann auf diesen Bereich direkt zugreifen. Innerhalb dieses Bereiches brauche ich noch Details, deswegen lege ich mir direkt ein rngDetails dahin, As Range, und kann dann nämlich erstmal ausrechnen, wo dieser Detailbereich, der wirklich die gewünschte Zeile enthält, liegt. Der ist nämlich so wie der bisherige Adressenbereich, aber von allen nur genau eine Zeile. Achtung, dieses Row ist eine Zahl, die die Zeilennummer der ersten Zeile des Bereichs zurückgibt. Wäre in diesem Fall die 4, weil die Adressen in Zeile 4 beginnen. Was ich aber brauche, ist als Range, als Bereich, eine der Zeilen, also in dieser Rows, Auflistung, im Plural. Und davon brauche ich jetzt eine Zeile mit einer bestimmten Nummer, und zwar diejenige, die meinem Listenindex entspricht, also von lstAdressen.ListIndex. Da der 0-basiert ist, kann ich direkt so drauf zugreifen. Und das ist jetzt der Bereich, der genau die gesuchte Zeile angibt. Wir können uns das ja mal eben anzeigen lassen, ob alles richtig ist. Also MsgBox, und von rngDetails will ich jetzt tatsächlich Row im Singular wissen, nämlich die Zeilennummer. Ein Kompiliercheck, damit nichts vertippt ist. Und dann mit F5, schauen wir doch mal. Die Reich GmbH ist die Zeile mit dem Index 4. 4+4 gibt 8. Das sollte also, jetzt wenn ich draufklicke, mit einer 8 antworten. Da ist noch ein Denkfehler drin. Ich habe mal wieder die 0-basierte Auflistung als Standard angenommen, aber es ist natürlich keine. Zellen sind nicht 0-basiert. Das ist bei Excel immer ein bisschen lästig. Das heißt, hier müssen wir tatsächlich +1 rechnen. Die Cells-Auflistung, auf die es nachher hinausläuft, die Rows sind nämlich auch eine Zellenauflistung, die sind immer 1-basiert. Die linke obere Ecke einer Tabelle ist ja auch 1,1, also Zeile 1, Spalte 1. Also noch ein Test. Jetzt kommt tatsächlich für die Reich GmbH die 8 raus, die Zeile 8. Immer den ersten und den letzten testen, das sind immer die Sonderfälle. Lassen Sie sich nicht davon irritieren, dass jetzt hier zwei markiert sind. Das liegt an der MsgBox, das verschwindet gleich. Also die erste Zeile, Testinghoff, ist Nummer 4. Das ist richtig. Und die letzte Zeile ist die Nummer 10, Prüfmann. Alles in Ordnung. Jetzt haben wir die Zeilennummer herausbekommen und könnten dazu jetzt die Daten nachladen. Das braucht aber natürlich erstmal ein bisschen Platz und Elemente, um die unterzubringen. Aber wir haben schonmal die richtige Zeile in der Hand.

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!