Excel 2013 VBA Grundkurs

Offset

Testen Sie unsere 1931 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mit dem Offset-Befehl lässt sich in VBA ein beliebiger Bereich in jede Richtung verschieben. So lassen sich auch aufgezeichnete Makros deutlich verbessern.

Transkript

Erinnern Sie sich noch an das Makro, was wir aufgezeichnet haben? Welches ursprünglich nur RechtsRot hieß? Ich habe das aus dem anderen Modul hierher kopiert und habe es deswegen RechtsRotAufgezeichnet genannt. Das ist Code, der beim Aufzeichnen entsteht. Aber der enthält ein wichtiges Element, mit dem ich mich beschäftigen möchte, nämlich das Offset. Was beim Aufzeichnen entstanden ist, das von der aktiven Zelle aus, ein Offset, um diese Parameter verschoben wurde. Dort - ein Bereich aufgemacht wurde, der so groß ist, wie die Zelle vorher, nämlich eine einzige. Und das wurde markiert. Und für diese Markierung, Selection, wurde die Farbe geändert. Und dann ging es wieder einen Schritt zurück. Das zeigt sich vor allem hier drin. Bei der Gelegenheit wollte ich Ihnen erstens zeigen, dass Select der unwichtigste Befehl überhaupt ist. Wenn in einer Aufzeichnung drin steht: irgendwas am Ende mit Select. Und in der nächsten Zeile es mit Selection beginnt, dann heißt es auf Deutsch, dass Sie das Objekt selber nehmen können und anstatt der Selection einsetzen. Ich mache das mal als Kopie hiervon. Das wird also RechtsRotBesser heißen. Es dürfte übrigens auch RechtsRot heißen. Erstens, das Tastenkürzel zielt auf das RechtsRot im anderen Modul. Und zweitens, darf es je Modul ein gleichnamiges Objekt geben. Macht es nur nicht übersichtlicher, deswegen nenne ich es anders. Also, was ich versprochen hatte. Dieses hier können wir rausschmeißen und da einsetzen. Kein Select. Und das heißt in der Folge übrigens auch kein Zurückgehen. Das ist nämlich das wesentliche Konzept. Wenn Sie irgendwas verändern wollen, ändern Sie das, aber gehen Sie nicht hin. Sie können das aus der Ferne ändern, genauso wie hier, wo Sie einfach sagen: "Von hier aus gesehen soll in der Nachbarzelle was passieren". Ich werde mal eine völlig beliebige andere Farbe nehmen. Was hatten wir noch nicht? vbGreyText gibt es, also grauer Text. Das ist so ein Silber-hell-grau, auch wenn es jetzt RechtsRot heißt. Nur damit Sie deutlich sehen, dass es funktioniert. Ich wechsele in irgendeine Zelle, hier ist noch nichts bunt. Und kann es deswegen nicht mit Alt + R aufrufen. Muss also wirklich hier reinklicken, F5 drücken und nachgucken. Na ja, das ist ein sehr dunkles Grau geworden. Wir können das einfach so stehen lassen. Sie sehen ja oben, die Zahl ist noch da. Also, mit Alt + F11, das hat funktioniert. Ich stelle es mal wieder auf 192, damit man es lesen kann. Machen wir vielleicht nochmal einen Test. Von hier aus: der Cursor steht in D9. Starte ich es und ohne dass sich der Cursor bewegt, hat sich die Nachbarzelle verfärbt. Das ist das Wichtigste - ohne dass sich der Cursor bewegt. Ich mache das nochmal ganz deutlich. Ich markiere hier einen größeren Block. Das würde mit dem Strg + R-Makro nämlich verloren gehen. Und wenn ich das jetzt starte, einmal F5, ist gelaufen. Dann ist der Block erhalten geblieben, obwohl sich die Farbe geändert hat. Ich mache das nochmal hier, damit Sie es deutlich sehen. Einmal F5, das ist gelaufen, die Farbe hat sich geändert, aber die Markierung ist gleich geblieben. Das heißt, ich zerstöre dem Benutzer nicht seine Markierung. Deswegen wann immer Sie aufzeichnen und dort ein Select und anschließend ein Selection entdecken, weg damit. Das macht nicht nur den Code kürzer, sondern auch für den Benutzer besser. Denn der hat nicht das Gefühl, dass da auf dem Bildschirm wild hin und her markiert wird. Das wäre so, wenn Sie es, wie bisher markiert lassen. Es soll aber eigentlich um den Offset-Befehl gehen. Der ist nämlich durchaus praktisch und den werden Sie häufig brauchen, wenn Sie, so wie hier einmal nach rechts gehen. Mache ich das mal ganz explizit. Eine Sub EinsNachRechts. Und damit Sie deutlich sehen, wo ich stehe und wo ich dann hingehe. Ich mache das auch wirklich mit hingehen und Select. Kommt vorher ein Debug.Print ActiveCell.AddressLocal. Dann sehe ich, wo ich vorher stehe. Das können wir schon mal dahinter kopieren. Und jetzt bewege ich mich. Nämlich von der ActiveCell aus gesehen ein Offset, um... Und Sie sehen jetzt hier ein RowOffset, ein ColumnOffset. RowOffset - um wie viele Reihen möchte ich mich bewegen, um wie viele Zeilen. Keine, denn ich will nach rechts gehen. Komma, um wie viele Spalten will ich mich bewegen. Eine, und zwar +1, ich will nämlich nach rechts gehen. Und jetzt mache ich ein Select, weil ich da auch wirklich hingehen will. Ich brauche eigentlich gar nicht vorher zu gucken, wo ich stehe, denn das wird mir gleich ausgedruckt. Mit F5 habe ich mich also von E13 nach F13 bewegt. Und mit Alt + F11 kann ich nachgucken: ich stehe jetzt in F13. Vorher, wenn Sie sich erinnern, war die Markierung so. Dabei verlieren Sie durch so ein Select natürlich immer auch die vorherige Markierung. Das gibt es in alle Richtungen. Das mache ich jetzt mal durch schlichtes Kopieren. Dann ist es glaube ich, am einfachsten. Wenn Sie Eins nach links gehen wollen, dann bedeutet das, das ColumnOffset ist -1. Das war es schon. Wenn ich das mit F5 laufen lasse. Aber natürlich nur wenn ich den Cursor drin stehen habe, so. Dann sehen Sie: ich habe mich von E nach D, nämlich von E13 nach D13 bewegt. Und das Ganze nach oben. Das "links" können wir vielleicht auch mit einem S schreiben. Und das Ganze nach oben - bedeutet... Ich nehme die hier mal einfach nochmal weg. ...das RowOffset, das Zeilen verschieben muss um -1 sein und die Column bleibt gleich, also 0. Das können wir wieder im Vergleich gucken. EinsNachOben bedeutet mit F5 von D13 nach D12. Und der Letzte noch. Also, EinsNachUnten. Das bedeutet erwartungsgemäß, dass das RowOffset hier +1, nämlich nach unten geht. Auch noch einmal ausgeführt. Und mit F5, D12 nach D13. Damit haben Sie alle vier Richtungen und Sie werden hoffentlich zugeben, dass dieses Offset in Norm praktisch ist, indem Sie einfach die Richtung angeben können. Das ähnelt so ein bisschen der Z1, S1-Schreibweise, die auch Zeile -1, Spalte +1 und sowas hat. Ist hier nur ein bisschen netter anzugeben. Also, Offset ist der Befehl, den Sie brauchen, wenn Sie einen Bereich verschieben wollen. Ob Sie ihn anschließend Select, markieren oder irgendwas anderes machen, ist aber unerheblich.

Excel 2013 VBA Grundkurs

Holen Sie aus Excel 2013 mit der integrierten Programmiersprache VBA auch das letzte Quäntchen an Funktion heraus und lassen Sie sich dazu zeigen, was alles möglich ist.

6 Std. 18 min (63 Videos)
Gute Einführung!
KS

Lorenz Hölscher stellt das Thema sehr interessant, mit angenehmer Professionalität und zweifelsfrei kompetent dar. Einziger Kritikpunkt hier (wie auch allgemein bei den video2brain Videos) ist, dass mit zunehmender Komplexität eben nicht auch die Intensität der Erklärung ansteigt. Oder auf deutsch gesagt: Man fühlt sich gegen Ende hin zunehmend nicht mitgenommen. Insgesamt also ein sehr gutes Training, das man jedoch vor allem im letzten Drittel ein zweites, vielleicht auch ein drittes Mal durchgehen muss.

 

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!