(Sub)-Prozedur / Makro einfügen

Einfügen von Prozedur – Code (Sub)

De­fi­ni­ti­on

Prak­tisch jede Ak­ti­on, die Sie in Ex­cel per Hand durch­führen, kann mit ein­er Proze­dur, also ei­nem Ma­kro sprich VBA – Pro­gramm (Sub) automa­tisiert wer­den. Es gibt aber auch ei­ni­ge Vor­gän­ge, die auss­chließlich mit ei­nem sol­chen Pro­gramm aus­ge­führt wer­den kön­nen. In die­ser An­lei­tung erken­nen Sie, wie Sie da­mit umge­hen und wie Sie vorhan­de­nen Code in Ihre Ta­bel­len ein­fü­gen und nut­zen kön­nen.

Hin­weis: Gro­ße Tei­le die­ser An­lei­tung gel­ten auch für frü­he­re Ver­sio­nen des Ex­cel, ins­beson­dere ab Ver­sion 2000. In je­dem Fall aber sind die dargestell­ten Menüpunk­te, man­che Abbil­dun­gen und der Teil mit den Entwick­ler­tools nicht für äl­te­re Ver­sio­nen gül­tig. Mit Ex­cel 2007 ist der Menü-Bere­ich kom­plett geän­dert wor­den.

▲ nach oben …

Kurz und knapp (für Ei­li­ge)

Hier wirk­lich nur in Stich­worten, wie Sie ein Ma­kro/V­BA-Code, wel­chen Sie beispiel­sweise von ein­er CD, dem Netz, auf die­ser Sei­te oder ähn­lichen Quel­len ko­piert ha­ben, in eine Ex­cel-Da­tei ein­fü­gen, da­mit Sie ihn aus­führen kön­nen:

  • Acht­en Sie dar­auf, dass die ent­spre­chen­de Da­tei (das Work­book) ge­öff­net und auch ak­tiv ist.
  • Tas­tenkom­bi­na­tion AltF11, um die Entwick­lung­sumge­bung für Ma­kros (den VBA-Edi­tor) zu öff­nen.
  • Bei Be­darf: StrgR, um den Pro­jekt-Explor­er zu öff­nen und zu ak­ti­vie­ren.
  • Das Work­book oder das gewün­schte Arbeits­blatt per Dop­pelk­lick mar­kie­ren. Die­ses Ob­jekt ist dort nun blau hin­ter­legt dar­ge­stellt. Da­durch wird im recht­en Teil des Fen­sters der ei­gent­li­che Edi­tor (wei­ßer Hin­ter­grund) ge­zeigt.
  • Im Edi­tor den Code schrei­ben oder den vor­her ko­pier­ten Code aus der Zwischen­ab­lage ein­fü­gen.
  • Frem­der Code: Unbe­d­ingt in­halt­lich prü­fen, ob nicht unge­wollte Aktio­nen durchge­führt wer­den (Schad­pro­gramme).
  • Eigen­er Code: Noch ein­mal auf Tipp­feh­ler und auch Logik­fehler prü­fen.
  • Zur Sicher­heit mit StrgS oder über das Menü spe­ich­ern. Bei Ver­sio­nen ab Ex­cel 2007 wäh­len Sie den Date­ityp *.xlsm, da­mit die Ma­kros mit gespe­ichert wer­den.

Hin­weis: Das gilt prinzip­iell nur für Proze­duren (SUB). Selb­st de­fi­nier­te Funk­tio­nen (UDF), wel­che in Arbeits­blät­tern ver­wen­det wer­den, müs­sen in ein Pro­jekt-Mod­ul einge­fügt wer­den. Mehr dazu an die­ser Stel­le.

Ab so­fort ste­ht Ih­nen der Code zur Aus­führung bere­it. Sie kön­nen den VBA-Explor­er auch wie­der schlie­ßen.

So weit die Kurz­form. Eine we­sent­lich aus­führlichere und mit Screen­shots verse­hene An­lei­tung fol­gt in den Zei­len hier­un­ter …

▲ nach oben …

Un­se­re Mus­ter-Da­tei­en

Da­mit Sie mög­lichst detail­liert die Arbeitss­chritte nachvol­lziehen kön­nen, stel­len wir Ih­nen hier drei Mus­ter-Da­tei­en zum Down­load zur Ver­fü­gung:

▲ nach oben …

Der Source­code (das Pro­gramm)

In Fo­ren des Inter­nets, Büch­ern, Zeit­schrif­ten, Anleitun­gen, auf die­ser Site, … wer­den mit­un­ter Excel-Lösun­gen in Form von VBA-Code ange­boten. Sie ha­ben dann mehr oder we­ni­ger Zei­len mit ei­nem Pro­gramm vor­liegen und möcht­en die­se in Ihr Excel-Pro­jekt ein­binden. Wie Sie bei die­sen Gele­gen­heit­en vorge­hen soll­ten, wird hier nun aus­führlich be­schrie­ben.

Angenom­men, fol­gende Auf­gabe soll durchge­führt wer­den: In der Ta­bel­le1 sol­len alle Zah­len um 10% er­höht wer­den. Tex­te oder als Text for­matierte Zel­len sol­len nicht ver­än­dert wer­den, selb­st wenn der In­halt der Zel­le nur aus Zif­fern, Vorze­ichen und Dezimal­trenn­zei­chen beste­ht, also ei­gent­lich eine Zahl ist. Und kalen­darische Dat­en, die ja ei­gent­lich auch nichts an­de­res sind als pos­i­tive Zah­len, sol­len auch so blei­ben, wie sie sind. Aus­nahme: Der logis­che Wert WAHR, der wird verän­dert (was sich aber auch noch un­ter­bin­den lässt). So et­was per Hand zu erledi­gen, kann eine ech­te Stra­fe sein.   😕

Die­se Auf­gabe lässt sich mit Sicher­heit per Ma­kro viel bess­er lö­sen als „zu Fuß”. Nicht nur, weil es schnel­ler ist, son­dern auch der Ge­nau­ig­keit und der gerin­geren Fehler­an­fäl­lig­keit we­gen. In der Beispiel­d­atei ist in der Zel­le A4 Text, auch wenn es auf den ers­ten Blick nicht da­nach aus­sieht. Sie erken­nen es ei­gent­lich nur in der Edi­tierzeile, wo vor dem ei­gent­li­chen In­halt ein Aus­las­sungsze­ichen ste­ht. Aber es geht hier ja nicht in ers­ter Lin­ie um den Sinn von Ma­kros son­dern dar­um, wie die­se in eine Ta­bel­le oder Ar­beits­map­pe einge­bun­den wer­den. Der VBA-Code für die­sen Zweck wür­de beispiel­sweise so ausse­hen:

Sub Plus10Prozent() 
Dim Zelle As Range 
For Each Zelle In Tabelle1.UsedRange
   If IsNumeric(Zelle) Then 
      If Not WorksheetFunction.IsText(Zelle.Value) Then
         Zelle.Value = Zelle.Value * 1.1 
      End If 
   End If 
Next Zelle
End Sub

So, die Pro­gram­mzeilen, der Source­code liegt da­mit vor. Die­sen wol­len Sie nun in eine Ex­cel-Da­tei ein­brin­gen, da­mit das Pro­gramm auch aus­ge­führt wer­den kann. Dazu müs­sen Sie das Ma­kro in Ex­cel erst ein­mal er­stel­len, was durch Abtip­pen oder per copy and pas­te pas­sie­ren kann. Ge­hen Sie in je­dem Fall dazu so vor:

  • AltF11, um den VBA-Edi­tor, die Entwick­lung­sumge­bung zu öff­nen.
  • Even­tu­ell StrgR, da­mit der Pro­jekt-Explor­er (im Fen­ster links) bei Be­darf ge­öff­net und ak­ti­viert wird:
Editor-Fenster nach Alt-F11 Klick

Edi­tor-Fen­ster nach Alt-F11 Klick

Sie se­hen erst ein­mal nicht so viel. Zu die­sem Zeit­punkt ha­ben Sie auch noch nicht die Mög­lich­keit, den Code in Ex­cel, ge­nau­er ge­sagt den VBA-Edi­tor einzufü­gen. Sie müs­sen sich zu die­sem Zeit­punkt entschei­den, wo die Proze­dur gespe­ichert wer­den soll. Indi­rekt entschei­den Sie da­mit auch, ob das Pro­gramm in der ge­sam­ten Map­pe oder nur in bes­timmten Ta­bel­len aus­ge­führt wer­den kann. Im lin­ken Teil des Fen­sters, dem Pro­jekt-Explor­er erken­nen Sie eine Auflis­tung ver­schieden­er Excel-Objek­te. Zu­oberst ein VBA-Pro­jekt, des­sen Na­men ich unken­ntlich ge­macht habe. Er ist hier nicht rel­e­vant. Das zwei­te VBA-Pro­jekt hat bei Ih­nen ver­mut­lich den Na­men Map­pe1. Das ist die derzeit­ige (neue) Da­tei, die noch nicht un­ter ei­nem an­de­ren Na­men gespe­ichert wor­den ist. Dar­un­ter find­en Sie die einzel­nen, ver­füg­baren ExcelOb­jek­te mit den Blatt-Na­men. Hin­weis: Wenn Sie mit den von uns in die­ser Map­pe zur Ver­fü­gung gestell­ten Muster-Map­pen arbeit­en, wer­den Sie erken­nen. dass bere­its die Na­men für das Pro­jekt und die Tabel­len­na­men den Gegeben­heit­en an­ge­passt sind. Die Fra­ge ist nun: Wo soll die­ses Mod­ul „behei­matet” sein, von wo aus soll es auf­ge­ru­fen und aus­ge­führt wer­den kön­nen? In un­se­rem Fall ist es (nur) die Ta­bel­le1, wo das Pro­gramm abgear­beit­et wer­den soll. Füh­ren Sie also bit­te auf ge­nau der Zei­le im Pro­jekt-Explor­er (links) ei­nen Dop­pelk­lick aus. Umge­hend wird sich et­was än­dern:

Editor_geoeffnet

Der Edi­tor ist nun ge­öff­net

Im Pro­jekt-Explor­er ist die Zei­le Ta­bel­le1 (Ta­bel­le1) mar­kiert, far­blich hin­ter­legt. Im recht­en Teil des Fen­sters ist nun die graue Flä­che durch ei­nen Edi­tor (jet­zt wei­ßer Hin­ter­grund) mit ei­nem blink­enden Schreibcur­sor erset­zt wor­den. Hier kön­nen Sie nun die Zei­len per Hand ein­ge­ben oder ei­nen aus der Zwis­chen­ablage ko­pier­ten Code ein­fü­gen. Da­mit ist die Haup­tar­beit schon ge­tan, denn ab so­fort kann das Ma­kro aus­ge­führt wer­den. Hin­weis: Über­prüfen Sie in je­dem Fall, ob der Code even­tu­ell et­was tun kön­nte, was nicht ge­wollt ist. Oder um es klar zu sa­gen: Im­mer wie­der stel­len fehlgeleit­ete „Scherz­bol­de” Pro­gram­mzeilen in das Netz, wel­che nicht nur das tun, was in der Beschrei­bung an­ge­ge­ben ist. Der Scha­den kann sich bis zum total­en Daten­ver­lust der Fest­plat­te ausweit­en. Und Spi­onage-Soft­ware ist dur­chaus auch auf die­sem Wege ein­zu­schleu­sen.

▲ nach oben …

Was – Wann – Wo

Im Pro­jekt-Explor­er sind ja in Sa­chen Spe­icherort ver­schiedene Möglichkeit­en der Aus­wahl ge­ge­ben. Da stellt sich nun die Fra­ge: Was soll ich wann war­um aus­wäh­len? Grund­sät­zlich gilt, dass ein Pro­gramm nur dort sicht­bar ist, wo es abge­spe­ichert wur­de. Wenn Sie also eben den Code dem Ob­jekt Ta­bel­le1 zuge­ord­net ha­ben, dann ist es nach drück­en von AltF11 auch nur dort sicht­bar. Beim Dop­pelk­lick auf Ta­bel­le2 im Pro­jekt-Explor­er wird das Edi­tor-Fen­ster leer blei­ben. Wenn Sie allerd­ings über die Rib­bon-Leiste (Men­üband) ge­hen und dort bei den Entwick­ler-Tools das zwei­te Icon Ma­kros aus­wäh­len oder alter­na­tiv mit AltF8 zum gle­ichen Ziel gelan­gen, dann wer­den Sie das Ma­kro den­noch se­hen und auch aus­führen kön­nen. Aber: Der Code wird in je­dem Fall an dem Ort aus­ge­führt, wo das Ma­kro gespe­ichert ist. (Den­noch gilt: Aus­nah­men bestäti­gen die­se Re­gel.) Um das ein­mal an ei­nem klei­nen Bei­spiel zu verdeut­lichen, hier ein Mini-Pro­gramm, welch­es in A1 den Text „Hugo Hur­tig” schrei­ben soll:

Sub Hugo() 
   Cells("A1") = "Hugo Hurtig"
End Sub

Fü­gen Sie die­se drei Zei­len bit­te unter­halb des vorhan­de­nen Codes in den Edi­tor für Ta­bel­le1 ein. Wech­seln Sie nun bit­te in Ex­cel (bei den Ta­bel­len) in die Ta­bel­le2, da­mit die­ses die ak­tu­el­le, ak­ti­ve Ta­bel­le ist. AltF8 und füh­ren Sie dann das Ma­kro Ta­bel­le1.Hugo aus. Offen­sichtlich ge­schieht nichts. Aber wenn Sie zur Ta­bel­le1 wech­seln, se­hen Sie, dass der Code kor­rekt aus­ge­führt wor­den ist. In A1 ste­ht der Text Hugo Hur­tig.

Hin­weis: Falls Sie den Me­nü­punkt Entwick­ler­tools nicht se­hen kön­nen, bekom­men Sie hier Hil­fe.

Aus dem Grun­de ist es sin­nvoll, alle Ma­kros, die unab­hängig von dem der­zeit aktiv­en Tabel­len­blatt in der (kom­plet­ten) ak­tu­el­len Ar­beits­map­pe et­was aus­führen sol­len, in DieseAr­beitsmappe (ers­te Aus­wahl inner­halb des Pro­jek­ts) zu spe­ich­ern.

Die­se For­mulierung „schre­it” förm­lich nach zwei Fra­gen: War­um ha­ben denn die einzel­nen Ta­bel­len denn über­haupt eine Spe­icher­möglichkeit für VBA-Code und wo spe­ichere ich Ma­kros, die ich in al­len mög­li­chen Arbeitsmap­pen ver­wen­den will und nicht nur der ak­tu­el­len?

Eine Ant­wort ist oben schon ge­ge­ben. Wenn sich der Code im­mer nur auf eine bes­timmte Ta­bel­le be­zie­hen soll, dann bie­tet sich die­se Ta­bel­le auch als Spe­icherort an. Dazu kommt noch der Vor­teil, das bei et­was „lock­er­er” (ge­nau­er ge­sagt: unge­nauer) Pro­gram­mierung ein Codea dann auch mal im ak­tu­el­len Fen­ster aus­ge­führt wird und da­bei vielle­icht wich­ti­ge Dat­en unwieder­bringlich über­schreibt. Und be­haup­ten Sie nicht, dass Sie in je­dem Fall sol­che „Schlampigkeit­en” unter­lassen. Es wird ge­wiss kein Vor­satz sein …   😉

Weit­er­hin gilt: User­Forms, also Eingabefor­mu­la­re, Bild­schir­m­masken wer­den in ei­nem eige­nen Bere­ich des Pro­jek­ts gespe­ichert. VBA-Pro­gramme, wel­che in der ge­sam­ten Map­pe gül­tig sein sol­len, ge­hö­ren in den Bere­ich mit dem Na­men DieseAr­beitsmappe. Spä­ter, wenn Sie sich in Rich­tung „Pro­fi” entwick­elt ha­ben, dann wer­den Sie geziel­ter mit die­sen Möglichkeit­en arbeit­en.

Und war­um soll­ten Sie nicht gle­ich al­les in DieseAr­beitsmappe spe­ich­ern? Nun ja, the­o­retisch ist das dur­chaus mög­lich. Aber wenn der Pro­gramm­code nicht sehr gut „ab­ge­si­chert” ist, dann wird manch eine An­wei­sung unge­woll­ter Wei­se im ak­tu­el­len Tabel­len­blatt aus­ge­führt. Oder aber, ein Tabel­len­blatt wird umbe­nan­nt, dann kann von der zen­tralen Stel­le nur dar­auf zuge­grif­f­en wer­den, wenn der Code auch an­ge­passt wird.

Wenn Sie eine selb­st de­fi­nier­te Funk­tion (UDF, User Defi­ned Func­tion) spe­ich­ern wol­len, dann brau­chen Sie ei­nen neu­en Spe­icherort für das Pro­jekt. Die Func­tion muss in ei­nem Mod­ul gespe­ichert wer­den. Um solch ein Mod­ul, ei­nen neu­en Con­tain­er für den Code, zu schaf­fen, Klick­en Sie auf die in der fol­gen­den Abbil­dung ge­zeig­te Aus­wahl:

Modul 01

Mod­ul-Spe­icher­platz für selb­st de­fi­nier­te Funk­tio­nen

Alter­na­tiv kön­nen Sie im VBA-Fen­ster auch über das Menü Ein­fü­gen ge­hen und dort das Mod­ul wäh­len. Ihr Edi­tor-Fen­ster zeigt sich nun et­was an­ders:

Modul 02

Hier kön­nen Sie sog­ar auch den Na­men des Mo­duls än­dern

Im lin­ken Teil des Fen­sters (Pro­jekt-Explor­er) hat sich nun et­was ge­tan. Der Ord­ner Mod­ule so­wie der Ein­trag Mo­dul1 ist hin­zu gekom­men. Der Bere­ich des Edi­tors hat sich nicht verän­dert.

Da die zu­erst vor­ge­stell­te Proze­dur, wel­che die Zah­len um die 10% er­höht, ei­gent­lich sin­nvoller in DieseAr­beitsmappe aufge­hoben sein kön­nte, soll­ten Sie den kom­plet­ten Source­code in Ta­bel­le1 auss­chnei­den und in DieseAr­beitsmappe wie­der ein­fü­gen. Das dient auch ein we­nig der Übung zum Um­gang mit dem Edi­tor.

▲ nach oben …

Aus­füh­ren des Pro­gramms (ab 2007)

Bis­lang liegt der Code ja nur so da. Sie kön­nten ihn di­rekt im VBA-Edi­tor aus­führen, aber das ist nicht der Sinn der Sa­che. Sie kön­nen ein Ma­kro auch als User sehr ein­fach auf­ru­fen, in­dem Sie beim Menü Entwick­ler­tools auf Ma­kros Klick­en und dann in der Aus­wahl das gewün­schte Ma­kro dop­pelk­lick­en. Da­durch wird das Ma­kro ohne Rück­frage aus­ge­führt.

Aufruf eines Makros über das Menüband

Auf­ruf ei­nes Ma­kros über das Men­üband

Hin­weis: In äl­te­ren Excel-Ver­sio­nen find­en Sie den Punkt bei Ex­tras | Ma­kro | Ma­kros… und gelan­gen dann zum gle­ichen Fen­ster, wie in der fol­gen­den Abbil­dung ge­zeigt.

Makros_02

Es kön­nen auch meh­re­re Proze­duren zur Aus­wahl ste­hen

Natür­lich kön­nen Sie in die­sem Fen­ster auch auf Aus­führen Klick­en, um das Ma­kro zu star­ten. Wahrschein­lich sind Sie oben beim Test der Sub Hugo schon die­sen Weg gegan­gen. Und bei Schritt wird das Ma­kro Schritt für Schritt aus­ge­führt, um even­tu­el­le Feh­ler zu erken­nen.

Hin­weis: Wenn Sie eine Ex­cel-Da­tei mit ei­nem inte­gri­erten Ma­kro in ein­er Pro­gramm-Ver­sion ab 2007 la­den, dann ist es dur­chaus mög­lich, dass vorhan­dene Ma­kros nicht aus­ge­führt wer­den kön­nen. Die stan­dard­mäßi­gen Sicher­heit­se­in­stel­lun­gen ver­hin­dern die­ses. In dem Fall müs­sen Sie nach dem Öff­nen des Arbeits­blattes die ent­spre­chen­de Schalt­fläche anklick­en. Mehr dazu le­sen Sie hier in ei­nem neu­en Fen­ster.

▲ nach oben …

Ver­sio­nen 2000 bis 2003

Wie bere­its erwäh­nt, vie­les ist sehr ähn­lich. Dar­um wer­de ich an die­ser Stel­le vie­le Tex­te von oben über­neh­men je­doch nicht alle Punk­te aus­führlich be­schrei­ben. Die Abbil­dun­gen sind weit­ge­hend mit inte­gri­ert. Im Zwei­fel schau­en Sie bit­te im obe­ren Teil noch ein­mal nach.

Der Source­code (das Pro­gramm)

Den ei­gent­li­chen Pro­gramm­code find­en Sie im obe­ren Bere­ich. Das Vorge­hen ist hier wie bei der Ver­sion 2007. Der Weg über das Menü ist mög­lich, aber an­ders als bei der 2007er Ver­sion. Ge­hen Sie also wie oben schon ge­zeigt so vor:

  • AltF11, um den VBA-Bere­ich zu öff­nen:
Editor-Fenster nach Alt-F11 Klick

Edi­tor-Fen­ster nach Alt-F11 Klick

Sie se­hen erst ein­mal nicht so viel. Zu die­sem Zeit­punkt ha­ben Sie auch nicht die Mög­lich­keit, den Code in Ex­cel einzufü­gen. Sie müs­sen sich an die­ser Stel­le entschei­den, wo die Proze­dur gespe­ichert wer­den soll und indi­rekt entschei­den Sie da­mit auch, wo das Pro­gramm auf­ge­ru­fen wer­den kann und wo nicht.

Im lin­ken Teil des Fen­sters erken­nen Sie eine Auflis­tung ver­schieden­er Excel-Objek­te. Zu­oberst ein VBA-Pro­jekt, des­sen Na­men ich unken­ntlich ge­macht habe. Er ist hier nicht rel­e­vant. Das zwei­te VBA-Pro­jekt hat den Na­men Map­pe1. Das ist die derzeit­ige Da­tei, die noch nicht un­ter ei­nem an­de­ren Na­men gespe­ichert wor­den ist. Dar­un­ter find­en Sie die einzel­nen, ver­füg­baren Excel-Objek­te .

Die Fra­ge war ja nun: Wo soll die­ses Mod­ul „behei­matet” sein, von wo aus soll es aus­ge­führt wer­den kön­nen? In un­se­rem Fall ist es die Ta­bel­le1, wo das Pro­gramm abgear­beit­et wer­den soll. Füh­ren Sie also bit­te auf die­ser Zei­le im Pro­jekt-Explor­er (so nen­nt sich die­ser Teil) ei­nen Dop­pelk­lick aus. Umge­hend wird sich et­was än­dern:

Der geöffnete VBA-Editor

Der ge­öff­ne­te VBA-Edi­tor

Im recht­en Teil des Fen­sters ist die graue Flä­che durch ei­nen Edi­tor mit ei­nem blink­enden Schreibcur­sor erset­zt wor­den. Hier kön­nen Sie den Code per Hand ein­ge­ben oder aus der Zwis­chen­ablage ein­fü­gen. Da­mit ist die Haup­tar­beit schon ge­tan, denn ab so­fort kann das Ma­kro aus­ge­führt wer­den.

▲ nach oben …

Was – Wann – Wo

Im Pro­jekt-Explor­er sind ja nun ver­schiedene Möglichkeit­en der Aus­wahl ge­ge­ben. Da stellt sich die Fra­ge: Was soll ich wann wo aus­wäh­len? Grund­sät­zlich gilt, dass ein Pro­gramm nur dort sicht­bar ist, wo es abge­spe­ichert wur­de. Wenn Sie also eben den Code dem Ob­jekt Ta­bel­le1 zuge­ord­net ha­ben, dann ist es nach drück­en von AltF11 auch nur dort sicht­bar. Wenn Sie allerd­ings über das Menü ge­hen …:

Aufruf über das Menü

Auf­ruf über das Menü

… ha­ben Sie natür­lich kei­ne Rib­bons son­dern das klas­sis­che Menü. Sie erken­nen auch, dass die Tas­tenkom­bi­na­tio­nen nicht gewech­selt ha­ben. Wäh­len Sie den ober­sten Punkt rechts, was AltF8 ent­spricht, um zum gle­ichen Ziel gelan­gen, dann wer­den Sie das Ma­kro den­noch se­hen und aus­führen kön­nen.

Auswah über Alt + F8

Aus­wahl über Alt + F8

Dar­um ist es sin­nvoll, rei­ne Ma­kros, die nur in der ak­tu­el­len Ar­beits­map­pe et­was aus­führen, in DieseAr­beitsmappe (ers­te Aus­wahl inner­halb des Pro­jek­ts) zu spe­ich­ern.

Die­se For­mulierung „schre­it” förm­lich nach zwei Fra­gen: War­um ha­ben denn die einzel­nen Ta­bel­len denn eine Spe­icher­möglichkeit für VBA-Code und wo spe­ichere ich Ma­kros, die ich in al­len mög­li­chen Arbeitsmap­pen ver­wen­den will und nicht nur der ak­tu­el­len?

In den Ta­bel­len wer­den vor­wiegend User­Forms gespe­ichert, also Eingabefor­mu­la­re, Bild­schir­m­masken. Allerd­ings kön­nen Sie die­se auch in der Ar­beits­map­pe spe­ich­ern. Spä­ter, wenn Sie sich in Rich­tung „Pro­fi” entwick­elt ha­ben, dann wer­den Sie geziel­ter mit die­sen Möglichkeit­en arbeit­en.

Wenn Sie eine Sub-Proze­dur nicht nur im ak­tu­el­len Pro­jekt aus­führen wol­len son­dern es glob­al nut­zen möcht­en, dann brau­chen Sie ei­nen neu­en Spe­icherort für das Pro­jekt. Die Sub-Proze­dur muss in ei­nem Mod­ul gespe­ichert wer­den. Das gilt übri­gens auch für alle Funk­tio­nen, wel­che Sie in Ex­cel ein­fü­gen wol­len. Um solch ein Mod­ul, ei­nen neu­en Con­tain­er für den Code, zu schaf­fen, Klick­en Sie auf die in der fol­gen­den Abbil­dung ge­zeig­te Aus­wahl:

Ein neues Modul

Ein neu­es all­ge­meines Mod­ul

Alter­na­tiv kön­nen Sie im VBA-Fen­ster auch über das Menü Ein­fü­gen ge­hen und dort das Mod­ul wäh­len. Ihr Edi­tor-Fen­ster zeigt sich nun et­was an­ders:

Das Modul - Fenster

Das Mod­ul – Fen­ster, wo Sie auch den Na­men des Mo­duls än­dern kön­nen

Im lin­ken Teil des Fen­sters hat sich nun et­was ge­tan. Der Bere­ich des Edi­tors hat sich nicht verän­dert. Wie ge­sagt, prinzip­iell kön­nen Sie auch hier Ihr VBA-Pro­gramm spe­ich­ern, aber es ist nur dann sin­nvoll, wenn es entwed­er eine Funk­tion (Func­tion) ist oder die­se Proze­dur uni­versell ein­set­zbar sein soll.

Da die Proze­dur ei­gent­lich sin­nvoller in DieseAr­beitsmappe aufge­hoben ist, soll­ten Sie den kom­plet­ten Source­code in Ta­bel­le1 auss­chnei­den und in DieseAr­beitsmappe wie­der ein­fü­gen.

▲ nach oben …

Aus­füh­ren des Pro­gramms

Bis­lang liegt der Code ja nur so da. Sie kön­nten ihn di­rekt im VBA-Edi­tor aus­führen, aber das ist nicht der Sinn der Sa­che. Sie kön­nen ein Ma­kro auch als User sehr ein­fach auf­ru­fen, in­dem Sie beim Menü Ex­tras auf Ma­kro und dann auf Ma­kros… Klick­en

Programm-Aufruf über das Menü

Pro­gramm-Aufruf über das Menü

… und dann in der Aus­wahl das gewün­schte Ma­kro dop­pelk­lick­en.

Per Doppelklick das Makro auswählen

Per Dop­pelk­lick das Ma­kro aus­wäh­len

Da­durch wird das Ma­kro ohne Rück­frage aus­ge­führt.

Natür­lich kön­nen Sie in die­sem Fen­ster auch auf Aus­führen Klick­en, um das Ma­kro zu star­ten. Und bei Schritt wird das Ma­kro Schritt für Schritt aus­ge­führt, um even­tu­el­le Feh­ler aufzus­püren und die­se zu erken­nen.

Im Gegen­satz zu der 2007er Ver­sion ist der ent­spre­chen­de Me­nü­punkt für die Ma­kros im­mer vorhan­den und sicht­bar. Die Vorge­hensweise für die neue Ver­sion ist oben be­schrie­ben.

Sie ha­ben zusät­zlich auch die Mög­lich­keit, ein Ma­kro bei je­dem Start der Map­pe automa­tisch aus­führen zu las­sen oder solch ein Mod­ul an eine selb­st er­stell­te Schalt­fläche zu bin­den oder auch ei­nen eige­nen Me­nü­punkt da­für zu schaf­fen. Anre­gun­gen dazu find­en Sie im Inter­net. Und natür­lich bei un­se­ren Sem­i­naren.

[NachOben­Let­zte Ver­weis=„T&T: Proze­dur ein­fü­gen”]
Dieser Beitrag wurde unter Coding / Programmieren, Mit VBA/Makro abgelegt und mit , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.