| Wussten Sie, dass...? (Excel, VBA, VBA-Editor) | Home |
![]()
| Seiteninhalt Es gibt immer wieder Dinge, die wusste man einfach noch nicht. Solches Wissen sitzt meistens in den Köpfen der Profis und bleibt leider für andere oft unzugänglich. Dabei könnten gerade Junior-Entwickler von diesem einzigartigen Know-how profitieren, damit sie nicht die gleichen, altbekannten Fehler machen und mit viel Aufwand (sprich Zeit und Nerven) nach einer Lösung suchen. |
Leserprofil Alle Excel-Anwender und VBA-Programmierer ohne spezielle Fachkenntnisse |
![]()
Verwandte Themen |
|
|
![]()
Microsoft
Excel - Geschichte (5 Beiträge)
Microsoft Excel - Benutzung (30 Beiträge)
Visual
Basic für Applikationen/VBA (20 Beiträge)
VBA-Editor/VBE
(10 Beiträge)
Excel-Geschichte: Wussten Sie, dass...
[1] ... Excel
ursprünglich für den Apple Macintosh entwickelt wurde? Die erste Version für Microsoft
Windows war Microsoft Excel 2.0 und erschien im Jahre 1987.
[2] ... es ein
Excel mit der Versionsnummer 6.0 nie gegeben hat?
[3] ... schon
Microsoft Excel 3.0, welches im Jahre 1990 erschien, bereits Add-Ins kannte?
[4] ... nach
der Installation des Service Packs 2 (SP-2) von Microsoft Office 2000 im
Info-Dialogfenster von Excel als Versionsinfo immer noch "SR-1" gezeigt wird?
[5] ... die
ersten Excelversionen für Windows 95 und Windows NT in bezug auf ihre technischen
Programmeigenschaften (Limitationen und Spezifikationen) in einigen Punkten schlechter
waren als ihre Vorgängerversionen für Windows 3.1? Durch die Umstellung auf 32
bit-Programmversionen wurden beispielsweise Array-Elemente neu als 24 bit-Wert gespeichert
und nicht mehr als 20 bit-Wert wie bis anhin. D.h. dass ein Array-Element mehr Speicher
beanspruchte. Da jedoch Array-Definitionen nach wie vor in einem 64 KB-Speichersegment
abgelegt wurden, konnte in der neuen Excelversion ein Array weniger Elemente enthalten als
in einer älteren Excelversion.
Excel-Benutzung: Wussten Sie, dass...
[1] ... mit
einer Uhrzeit, welche als Text vorliegt (z.B. "12:45:33"), trotzdem gerechnet
werden kann, indem man die Funktion WERT() verwendet?
Beispiel:
=WERT("16:48:00")-WERT("12:00:00") gibt 0.2, d.h. die
fortlaufende Zahl, die der Zeitdifferenz von 4 Stunden und 48 Minuten entspricht (das ist
1/5 bzw. 20 % eines Tages).
[2] ... eine
Zelle, die genau 255 mal das Number-Zeichen (#) anzeigt (bzw. über die gesamte Breite der
Zelle), sehr wahrscheinlich ein negatives Datum oder eine negative Uhrzeit enthält?
Beispiel:
Sie können dieses Verhalten mit folgender Formel testen:
"=WERT("08:00:00")-WERT("09:00:00")".
[3]
... Sie bei der Eingabe des Argumentes einer Funktion anhand eines zusätzlichen
Klammernpaares Excel dazu zwingen können, das Semikolon ';' nicht als Listentrennzeichen
zu interpretieren, da gewöhnlich das Semikolon dazu verwendet wird, die verschiedenen
Argumente einer Funktion zu trennen?
Beispiel:
Die Verwendung von zusätzlichen Klammern ist unter anderem bei der
BEREICHE-Funktion notwendig. Die Formel "=BEREICHE((B2:D4;E5;F6:I9))" gibt den
korrekten Wert 3 zurück. Ohne die zusätzlichen Klammern, d.h. mit der Formel
"=BEREICHE(B2:D4;E5;F6:I9)", nimmt Excel an, dass nach dem Semikolon ein
weiteres Argument folgt und daher die Fehlermeldung "Die eingegebene Formel enthält
einen Fehler. [...]" anzeigen, da die BEREICHE-Funktion nur ein einziges Argument
besitzt.
[4] ... Sie
die Zelladresse mit der Funktion "=ZELLE("Adresse";Bezug)" in
eine Zelle eintragen können, wobei Bezug für einen relativen Zellbezug (d.h.
ohne Dollarzeichen) steht?
Beispiel:
Die Formel "=ZELLE("Adresse";A1)" in der Zelle A1 ergibt
"$A$1". Wird diese Zelle z.B. in der Spalte A auf die Zeilen 2 bis 20 kopiert,
steht in den Zellen A2 bis A20 die entsprechende Adresse der Zelle.
[5] ... die
Anzahl der verschiedenen Kombinationen einer bestimmten Ausgangslage mit der
KOMBINATIONEN-Funktion sehr einfach berechnet werden kann?
Beispiel:
- Aufgabe: Sechs Kursteilnehmer sollen Zweiergruppen bilden. Wieviele
Personen-Kombinationsmöglichkeiten gibt es?
- Lösung: Die Formel für die Lösung lautet "=KOMBINATIONEN(6;2)". Die
Formel gibt die Zahl 15 zurück, was bedeutet, dass 15 verschiedene
Kombinationsmöglichkeiten existieren.
[6] ... das
Ergebnis einer Formel als fixer Ausdruck in eine Zelle eingetragen werden kann, indem nach
Eingabe der Formel nicht die Eingabe-Taste sondern die Funktionstaste F9 gedrückt wird?
Beispiel:
Geben Sie in eine Zelle "=ZUFALLSZAHL()" ein und drücken anstelle der
Eingabe-Taste die Funktionstaste F9. In die Zelle wird dadurch nicht die Formel sondern
das Resultat der Formel eingetragen, d.h. die ermittelte Zufallszahl.
[7] ... eine
Matrixformel eingegeben wird, indem nach Eingabe der Formel in der Bearbeitungsleiste die
Tastenkombination Strg+Umschalt+Eingabe (Ctrl+Shift+Enter) gedrückt wird (siehe auch Beitrag Nr. 24)?
[8] ... es
möglich ist, das Zahlenformat einer Zelle abhängig von der Erfüllung einer Bedingung
einstellen zu können? Bedingtes oder Berechnetes Benutzerdefiniertes Zahlenformat
Beispiel:
[=1] 0 "Tag";0 "Tage"
[Rot][=1] 0 "Tag";0 "Tage";0 "Tage";"Noch
"@
[9] ... die
Tastenkombination Strg+U (oder Strg+<) eine interessante Abkürzung für das
Duplizieren einer Zelle sowie das Ausfüllen von Zellbereichen darstellt?
Beispiel für Duplizieren:
Wenn in Zelle A1 die Zahl 5 steht und Sie möchten diesen Wert inklusive
Zell-Format in die Zelle A2 kopieren, dann müssen Sie lediglich die Zelle A2 selektieren
und anschliessend Strg+< drücken. In Zelle A2 steht nun ebenfalls die Zahl 5.
Beispiel für Ausfüllen:
Wenn in Zelle A1 der Text "Artikel" steht und Sie möchten diesen Text in
den Zellbereich A2:A15 füllen, dann müssen Sie den Bereich A1:A15 selektieren und
anschliessend Strg+< drücken. Der Zellbereich wird daraufhin mit dem Text
"Artikel" ausgefüllt.
[10] ... der
angezeigte Text eines Zeichnungsobjektes dynamisch abhängig vom Inhalt einer Zelle
gemacht werden kann?
Hinweise:
- Diese Verknüpfungsmöglichkeit existiert bei allen Zeichnungsobjekten,
denen ein Text hinzugefügt werden kann (also auch Autoformen).
- Es kann nur mit einer einzelnen Zelle verknüpft werden; Zellbereiche
dagegen sind nicht zulässig.
- Anstelle der Zelladresse kann auch der Name einer Zelle verwendet werden.
- Die Verknüpfung mit einer Zelle eines anderen Tabellenblattes oder einer
anderen Arbeitsmappe ist ebenfalls zulässig.
- Zellformatierungen wie Schriftart, -Grösse und -Schnitt werden bei
Anlegen der Verknüpfung auf das Zeichnungsobjekt übernommen.
- Automatische und manuelle Zeilenumbrüche im Zelltext werden
berücksichtigt.
Beispiel:
1. Fügen Sie ein neues Textfeld in ein Tabellenblatt ein.
2. Lassen Sie das Textfeld markiert und klicken Sie in die Bearbeitungsleiste.
3. Selektieren Sie jetzt mit der Maus in eine beliebige Zelle oder geben Sie im
Textfeld eine Zelladresse ein (z.B. =$B$5).
4. Drücken Sie nun die Eingabe-Taste.
-> Bei jeder Änderung der auf diese Weise verknüpften Zelle erscheint im
Textfeld der aktuelle Inhalt dieser Zelle.
[11] ...
während der direkten Zellbearbeitung anhand der Tastenkombination Strg+A in die
Bearbeitungsleiste gesprungen werden kann, und zwar unter Beibehaltung der aktuellen
Position der Texteingabemarke und Textmarkierung?
Beispiel:
1. Klicken Sie doppelt auf eine Zelle, welche beispielsweise die Formel
"=(SUMME(A1:C3)-D1)*2" enthält.
2. Markieren Sie in der Zelle die Zeichenfolge "-D1" der Formel.
3. Drücken Sie jetzt die Tastenkombination Strg+A.
-> Es wird sofort in die Bearbeitungsleiste gesprungen, wobei aktuell markierte
Zeichenfolge "-D1" wieder markiert wird und auch die Texteingabemarke wieder -
wie bei der direkten Zellbearbeitung - an der gleichen Stelle steht.
[12] ... die
Parameter (Argumente) einer Funktion während der Eingabe durch die Tastenkombination
Strg+Umschalt+A als Eingabehilfe sowohl in der Zelle als auch in der Bearbeitungsleiste
eingeblendet werden können?
Beispiel:
Geben Sie in einer Zelle den Funktionsname "=SUMME" ein und drücken Sie
die Tastenkombination Strg+Umschalt+A. Es wird daraufhin die komplette Funktionsdefinition
"=SUMME(Zahl1;Zahl2;...)" eingeblendet.
[13] ... ein
in die Zwischenablage kopierter Zellbereich (d.h. eine oder mehrere Zellen) als
dynamisches Bildobjekt in ein beliebiges Arbeitsblatt einer frei wählbaren Arbeitsmappe
eingefügt werden kann (Dynamic Snapshot)?
Beispiel:
Kopieren Sie den Zellbereich B3:E10 in die Zwischenablage, indem Sie den Bereich
markieren und die Tastenkombination Strg+C drücken. Drücken Sie nun die Umschalt-Taste
und klicken Sie bei gehaltener Umschalt-Taste auf das Menü Bearbeiten. Wählen Sie den
Menübefehl "Verknüpfte Grafik einfügen" aus. Sie erhalten ein neues
Bildobjekt, welches dynamisch mit dem kopierten Zellbereich verknüpft ist. Sobald sich
eine Zelle dieses Bereiches ändert, wird das Bild automatisch aktualisiert.
[14] ... es
eine Möglichkeit zur Ermittlung der Textformatierung einer bestimmten Zelle gibt? Mit der
Excel-Funktion ZELLE() können Sie herausfinden, ob der Text einer bestimmten Zelle
linksbündig, zentriert oder rechtsbündig formatiert ist.
Beispiel:
Geben Sie in der Zelle B1 die Formel "=ZELLE("Präfix";A1)"
ein.
' für linksbündig
^ für zentriert
" für rechtsbündig
[15] ... neu
zu definierende Namen, die Sie im Namensfeld (links in der Bearbeitungsleiste) eingeben,
standardmässig für die gesamte Arbeitsmappen gültig sind? Wenn Sie möchten, dass ein
neuer Name nur für das aktive Tabellenblatt gültig sein soll, können Sie vor dem Namen
den Blattnamen und ein Ausrufezeichen eingeben.
Beispiel:
Für den Zellbereich A2:A10 soll der neue Name "Produkte" definiert
werden, wobei der Name nur für das aktive Arbeitsblatt "Tabelle1" gelten soll.
Somit muss "Tabelle1!Produkte" im Namensfeld eingegeben werden.
[16] ... der
schnellste Weg, das Codefenster mit der Ereignis-Prozedur "Workbook_Open" zu
öffnen, über das Programmsymbolmenü des Arbeitsmappen-Fensters führt? Klicken Sie dazu
mit der rechten Maustaste auf das kleine Excel-Symbol links der Menüleiste (bei
Arbeitsmappen-Fenster im Vollbild-Modus) bzw. links des Arbeitsmappen-Fenstertitels (bei
nicht maximiertem Fenster).
[17] ... Sie
im Namensfeld (links in der Bearbeitungsleiste) nicht eine einzelne Zelladresse (z.B. B3)
oder die Adresse eines Zellbereiches (z.B. A2:C5) eingeben können, sondern auch mehrere
nicht zusammenhängende Bereiche und die Schnittmenge von Bereichen (anhand des
Vereinigungs- bzw. des Schnittmengenoperators) selektieren können?
Hinweis: Im Namensfeld wird als Vereinigungsoperator nicht wie in Formeln üblich
das Komma (,) sondern das Semikolon (;) benutzt. In Formeln wird das Semikolon zum Trennen
der Funktionsargumente benutzt (siehe auch Beitrag Nr. 7). Als
Schnittmengenoperator wird wie gewohnt das Leerzeichen verwendet.
Beispiel für Vereinigung:
Geben Sie im Namensfeld "A2;B5;D3:F10" ein, damit die Zellen A2, B5 und
D3 bis F10 selektiert werden.
Beispiel für Schnittmenge:
Geben Sie im Namensfeld "A1:E10 D8:G14" ein, damit die Zellen D8 bis E10
selektiert werden.
[18] ... mit
der Funktionstaste F6 zum nächsten Fenster-Ausschnitt eines geteilten Fensters gewechselt
wird, ohne dass dabei die aktuelle Zellmarkierung im jeweiligen Ausschnitt verloren geht?
Beispiel:
1) Markieren Sie die Zelle C5.
2) Führen Sie den Menübefehl "Fenster/Teilen" aus. Sie sehen nun vier
Fenster-Ausschnitte, wobei sich die aktive Zelle C5 im rechten unteren Ausschnitt
befindet. Dieser Ausschnitt ist somit auch der aktive Fenster-Ausschnitt.
3) Markieren Sie jetzt in diesem Ausschnitt den Zellbereich D7:F10.
4) Drücken Sie die Funktionstaste F6, wodurch im Uhrzeigersinn zum nächsten
Fenster-Ausschnitt gewechselt wird. Der Ausschnitt links unten ist nun aktivert und die
aktive Zelle ist A5.
5) Drücken und halten Sie jetzt die UMSCHALT-Taste und drücken zwei Mal auf die
Pfeil-nach-oben-Taste, damit der Zellbereich A3:A5 selektiert wird.
6) Drücken Sie nun mehrmals auf die F6-Taste und Sie werden erkennen, dass bei
jedem Drücken zum nächsten Ausschnitt gewechselt wird und dabei die jeweilige Markierung
des aktuellen Fenster-Ausschnitts wieder hergestellt wird,
[19] ... mit
der Excel-Funktion ZELLE() unter anderem auch festgestellt werden kann, welches die aktive
Zelle, bevor die Neuberechnung durchgeführt wurde, und zwar inklusive Arbeitsblatt- und
Arbeitsmappe-Name?
[20] ... die
Excel-Funktion ZEIT() eine fortlaufende Zahl als Dezimalbruch zwischen 0 und 0.99999999
zurückgibt, wobei die Zahl der Uhrzeit von 0:00:00 (24:00:00) bis 23:59:59 entspricht?
[21] ... in
Microsoft Excel für Windows beim Öffnen einer Datei, die mit einer Macintosh-Version von
Excel gespeichert wurde, automatisch das Datumssystem umgestellt wird, d.h. die
Einstellung "1904-Datumswerte" im Optionen-Dialogfenster automatisch aktiviert
wird?
[22] ... der
aktuelle Bereich der aktiven Zelle anstatt über Menü "Bearbeiten/Gehe zu...",
Schaltfläche "Inhalte", Option "Aktueller Bereich" ganz einfach mit
der Tastenkombination Strg+* (Stern) markiert werden kann?
[23] ... mit
der Tastenkombination Alt+Eingabe die zuletzt verwendete Zellformatierung auf den aktuell
selektierten Zellbereich angewendet wird?
[24]
... mit der Tastenkombination Strg+Umschalt+Eingabe in Microsoft Excel für Windows eine
Matrixformel eingegeben wird? Sehr wahrscheinlich wussten Sie dies bereits. Aber wussten
Sie auch, dass in Microsoft Excel für Macintosh dazu die Tastenkombination
+Eingabe
benutzt wird?
[25] ...
anstatt über Menü "Bearbeiten/Gehe zu...", Schaltfläche "Inhalte",
Option "Letzte Zelle" ganz einfach mit der Tastenkombination Strg+Ende zur
letzten Zelle des benutzten Bereiches gesprungen werden kann?
[26] ... man
bei gedrückter Alt-Taste den gerade selektierten Zellbereich auf das Blattregister ziehen
kann, um zu einem anderen Blatt zu wechseln? Dadurch können Sie Zellbereiche auch mit
Drag & Drop auf andere Blätter verschieben (oder kopieren, wenn Sie zusätzlich die
Strg-Taste drücken).
[27] ... sich
sehr einfach die Zeilen beziehungsweise Spalten einer bestimmten Gruppierungsebene
selektieren lassen, indem man die Umschalt-Taste gedrückt hält und dann auf das
gewünschte Gliederungssymbol "[+]" oder "[-]" klickt?
[28] ... mit
der Funktionstaste F4 ein Kombinationsfeld (DropDown-Feld) aufgeklappt werden kann, sodass
die Auswahlliste angezeigt wird?
[29] ... man
in der deutschen Ausgabe von Microsoft Excel ein Arbeitsblatt nicht in
"Änderungsprotokoll" umbenennen kann, weil dies ein reservierter und somit
gesperrter Name ist, der von Excel für interne Zwecke benutzt wird? In der englischen
Excel-Ausgabe ist es nicht möglich, ein Arbeitsblatt mit "History" zu benennen.
[30] ... zur
letzten Spalte des benutzten Zellbereiches gesprungen werden kann, indem man zuerst die
Ende-Taste und anschliessend die Eingabe-Taste drückt?
[1] ... VBA
ein Datum intern als numerischen Wert speichert?
Beispiel:
Das morgige Datum erhält man ganz einfach mit der Anweisung "MsgBox Date() +
1".
[2] ... VBA
die Windows Ländereinstellungen berücksichtigt, um herauszufinden, wie ein Datum zu
interpretieren ist? Es wäre sonst nicht möglich zu sagen, ob mit #1/5/99# der 1. Mai
1999 oder der 5. Januar 1999 gemeint ist.
[3] ... eine
Dezimalzahl ein Datum repräsentiert, sobald sie in den Datentyp Date umgewandelt wird?
Die Zahl links vom Dezimalpunkt ist dabei das Datum und die Zahl rechts vom Dezimalpunkt
die Zeit.
Beispiel:
Die Zahl 238.492063492063 entspricht dem Datum 25. August 1990 (=238) und der
Uhrzeit 11:48:34 (=492063492063).
[4] ... das
Number-Zeichen '#' gemäss VBA-Hilfe dazu benutzt werden kann, einen beliebigen Ausdruck
als Datum zu verwenden?
Beispiel:
Der Ausdruck #Januar 12 02# wird bei der Eingabe im Codefenster des VBA-Editors
sofort in #1/12/02# umgewandelt. Die Sache hat aber einen Haken, da die automatische
Umwandlung einen Bug besitzt (mehr unter Bugreport:
Das Number-Zeichen für Datumsausdrücke).
[5] ... ein
Datum für VBA nichts anderes als eine 8 Byte Gleitkommazahl ist, die einen eindeutigen
Punkt auf der Zeitachse darstellt? Die Zeitachse beginnt am 30. Dezember 1899 und endet am
31. Dezember 9999.
[6] ... in VBA
die Date-Anweisung und die Date-Funktion zwar beide das aktuelle Datum ausgeben, aber
dennoch einen Unterschied besitzen? Mit der Anweisung Date wird in der Regel das
Systemdatum eingestellt (kann auch benutzt werden, um es abzufragen). Mit der Funktion
Date() wird das Systemdatum abgefragt. Die Funktion Date() gibt einen Variant (mit
Unterdatentyp Date) zurück.
[7] ... Beitrag
folgt in Kürze... (ActiveSheet.Shapes(1).DrawingObject)
[8]
... man durch Abfragen von ActiveSheet.CodeName den internen Namen des aktiven
Arbeitsblattes erhält? Es gibt jedoch eine Ausnahme: Wenn das Änderungsprotokoll-Blatt
(es trägt den Namen "Änderungsprotokoll") aktiv ist, besitzt die
CodeName-Eigenschaft keinen Wert. Die Abfrage von ActiveSheet.CodeName gibt in diesem Fall
nichts zurück.
[9] ... jede
Zelle eines Tabellenblattes eine eindeutige Indexnummer in Form einer Ganzzahl zwischen 1
und 16'777'216 besitzt?
Beispiel:
Wenn Sie die Adresse der Zelle Nr. 14'697'534 wissen möchten, können Sie einfach
"Cells(14697534).Address" abfragen und erhalten das Ergebnis
"$BJ$57413".
[10] ... wenn
Sie alle Zellen mehrerer Zeilen eines Arbeitsblattes der Reihe nach (Zeile 1 Spalte A bis
IV, Zeile 2 Spalte A bis IV, Zeile 3 Spalte A bis IV usw.) mit Werten füllen möchten,
gar nicht zwei verschachtelte For-Next-Schleifen benötigt werden (wie es in vielen
VBA-Beispielen zu sehen ist)? Tatsächlich genügt eine einzige Schleife.
[11] ... auch
der VBA-Editor wie auch die MS Office-Anwendungen ein sogenanntes Easter Egg verbirgt?
Gehen Sie so im VBA-Editor vor:
1. Menübefehl Ansicht/Symbolleisten/Anpassen ausführen (Dialogfenster
"Anpassen" öffnet sich)
2. Mit der linken Maustaste auf das Fragezeichen des Hilfe-Menüs klicken
(Menü Hilfe wird aufgeklappt)
3. Mit der rechten Maustaste den Menüeintrag Info anklicken (Kontext-Menü
wird eingeblendet)
4. Im Feld "Name:" den Text "Show VB Credits" eintragen
(bisher stand dort "Info")
5. Eingabe-Taste drücken (Kontext-Menü verschwindet)
6. Dialogfenster "Anpassen" schliessen
Wenn Sie nun den geänderten Menübefehl "Show VB Credits" anwählen,
öffnet sich ein Fenster mit einem animierten Himmel, fliegenden Bauklötzen und einer
scrollenden Liste der Produktteam-Mitarbeiter.
[12] ... mit
der Anweisung "ActiveSheet.Pictures.Paste(Link:=True).Select" ein vorgängig in
der Zwischenablage abgelegter Zellbereich (eine oder mehrere Zellen) als dynamisches
Bildobjekt in ein beliebiges Arbeitsblatt einer frei wählbaren Arbeitsmappe eingefügt
wird (Dynamic Snapshot)?
Beispiel:
Kopieren Sie den Zellbereich B3:E10 in die Zwischenablage, indem Sie den Bereich
markieren und die Tastenkombination Strg+C drücken. Führen Sie jetzt die obige Anweisung
aus. Sie erhalten dadurch ein neues Bildobjekt, welches dynamisch mit dem kopierten
Zellbereich verknüpft ist. Sobald sich eine Zelle dieses Bereiches ändert, wird das Bild
automatisch aktualisiert.
[13] ... Excel
95, Excel 97, Excel 2000, Excel 2002 und Excel 2003 bei dem gleichen Fehler im
ungünstigsten Fall unterschiedliche Fehlermeldungen ausgeben?
Hinweis: Wichtig ist, dass Sie einem VBA-Programm die Laufzeitfehler der
unterschiedlichen Excel-Versionen korrekt abfangen, sollte das VBA-Programm sowohl unter
Excel 97/2000 als auch unter Excel 2002 eingesetzt werden.
Beispiel:
Schreiben Sie die VBA-Programmzeile "ActiveSheet.Cells.Value(2, 3) =
ActiveSheet.Cells.Value(4, 5)" in eine Sub-Prozedur und führen Sie diese aus.
Folgendes Verhalten tritt bei den jeweiligen Excel-Versionen auf:
- Excel 95: Kein Fehler (weil diese Programmzeile für Excel 95-VBA korrekt
ist)
- Excel 97: Laufzeitfehler 7 "Out of memory"
- Excel 2000: Laufzeitfehler 7 "Out of memory"
- Excel 2002: Laufzeitfehler 450 "Wrong number of arguments or invalid
property assignment"
In den Excel-Versionen neuer als Excel 95 müsste die Anweisung korrekt
"ActiveSheet.Cells(2, 3).Value = ActiveSheet.Cells(4, 5).Value" heissen.
[14] ...
Anführungstriche (") bzw. doppelte Hochkommas in Zeichenketten verwendet werden
können, indem man das "-Zeichen einfach doppelt schreibt?
Beispiel:
Sie möchten mit VBA der Zelle B1 eine WENN-Formel zuweisen. Dazu müssten Sie
schreiben:
Range("B1").Formula = "=IF(A1="Ja", 1, 0)"
Diese Anweisung wird aber nicht akzeptiert, da das erste "-Zeichen von
"Ja" als Schlusszeichen der Zeichenfolge "=IF(A1=" betrachtet wird.
Damit die Formel akzeptiert wird, müssen Sie folgendes eingeben:
Range("B1").Formula = "=IF(A1=""Ja"", 1,
0)"
Durch das zusätzliche Setzen des Wortes "Ja" in Hochkommas wird VBA
mitgeteilt, dass es sich um eine Zeichenfolge innerhalb einer anderen Zeichenfolge
handelt.
[15]
... mit der im Excel-Objektmodell ausgeblendeten Funktion "_WSFunction"
gerechnet werden kann?
Beispiel:
Die Anweisung "MsgBox Application.[_WSFunction]((10 + 20) / 3 + 50)"
liefert das Resultat 60.
[16]
... eine integrierte Excel-Funktion auf ganz unterschiedliche Art und Weise
aufgerufen werden kann?
Beispiel:
Alle folgenden Anweisungen liefern das gleiche Ergebnis:
- MsgBox Application.Max(4,6,3)
- MsgBox Parent.Max(4,6,3)
- MsgBox Application.WorksheetFunction.Max(4,6,3)
- MsgBox Application.[_WSFunction](Application.Max(4,6,3))
[17] ... eine
Zelle anstatt mit "Range(...)" auch angesprochen werden kann, indem man schlicht
die Zelladresse in eckige Klammern einfasst? Beachten Sie bitte, dass bei dieser Variante
der in den Klammern stehende Ausdruck (d.h. die Zelladresse) evaluiert wird. Die eckigen
Klammern sind nämlich die Kurzschreibweise der Methode Evaluate (siehe Hilfe von
Excel-VBA).
Beispiele:
- Range("B5") -> [B5]
- ?Range("C4").Formula -> ?[C4].Formula
[18] ... man
ein Arbeitsblatt sozusagen 'verstecken' kann, indem man im Eigenschaftenfenster des
VBA-Editors die Eigenschaft Visible des Arbeitsblattes auf xlSheetVeryHidden
setzt?
[19] ... mit
der eher ungewöhnlichen Anweisung "ActiveCell.Select" die Zellmarkierung auf
die aktive Zelle gesetzt wird? Die Anwendung ist insofern ungewöhnlich, weil die aktive
Zelle (ActiveCell) im Prinzip ja bereits selektiert ist und somit nicht anhand der Select-Methode
nochmals selektiert werden muss. Trotzdem wird die Anweisung in verschiedenen Situationen
benötigt, unter anderem wenn ein Objekt (beispielsweise ein Zeichnungsobjekt) markiert
ist und dann die Selektion 'zurück' auf die aktive Zelle besetzt werden soll.
Beispiel:
ActiveSheet.Shapes("Rectangle 1").Select
ActiveCell.Select
[20] ... ein
Datum, welches als fortlaufende Zahl vorliegt, mit der Format-Funktion in ein
Datum im Format TT.MM.JJJJ umgewandelt werden kann?
Beispiel:
Die Anweisung "MsgBox Format$(38713, "dd.mm.yyyy")" gibt das
Datum 27.12.2005 aus.
[1] ... Dateien mit der Dateinamenerweiterung 'exd' im Temp-Verzeichnis auf
Ihrer Festplatte Informationen zu denjenigen ActiveX-Controls enthalten, die Sie irgend
wann einmal in einem VBA-Projekt verwendet haben? Sobald Sie ein Zusatz-Steuerelement das
erste Mal benutzen, generiert die VBE automatisch ein binäres File mit dem Namen des
Controls und der Endung "exd". Wurde diese Datei einmal erstellt, laufen alle
späteren Control-Verwendungen in der VBE um einiges schneller ab, da die VBE die
benötigten Informationen über das Control bereits kennt. Die exd-Dateien können Sie
bedenkenlos löschen, denn beim nächsten Gebrauch eines ActiveX-Controls wird die
erforderliche Datei wieder automatisch erstellt.
[2] ... Sie Add-In-Projekte vorzugsweise vor dem Speichern/Schliessen des
Projektes explizit kompilieren sollten (Menübefehl Testen/Kompilieren von
<Projektname>)? Die Kompilierung des Programmcodes ist unbedingt zu empfehlen,
da Add-In-Projekte beim Speichern bzw. Schliessen nicht automatisch kompiliert werden.
Durch die Kompilierung und anschliessende Speicherung der Exceldatei wird nebst dem
original Programmcode auch der kompilierte Code in der Datei abgelegt (und beim späteren
Öffnen der Datei automatisch geladen). Bereits kompilierter Code wird schneller
ausgeführt, da bei Aufruf einer Prozedur/Funktion nicht zuerst kompiliert werden muss.
Zudem werden durch die Kompilierung allfällige Syntaxfehler im VBA-Code erkannt und
gemeldet. Allerdings ist eine Exceldatei, die kompilierten Code enthält, ein bisschen
grösser als die gleiche Datei ohne kompilierten Code. Es ist nachvollziehbar, dass eine
grössere Datei etwas mehr Zeit zum Öffnen benötigt. Diese Zeitdauer wird jedoch durch
die schnellere Codeausführung vollumfänglich kompensiert.
[3] ... die VBE grundsätzlich über zwei Betriebsmodi verfügt, nämlich
den "Run Mode" (Ausführungsmodus) und den "Design Mode"
(Entwurfsmodus)? Der Run Mode besitzt seinerseits wiederum mehrere Modi: Laufzeitmodus,
Haltemodus und Beendetmodus.
[4] ... sämtliche Public-/Global-Variablen zurückgesetzt werden, sobald
Sie in den Entwurfsmodus wechseln oder im Direktfenster die Anweisung "Run"
eingeben?
[5] ... der VBA-Editor wie auch die MS Office-Anwendungen ein sogenanntes
Easter Egg verbirgt?
Gehen Sie so im VBA-Editor vor:
1. Menübefehl "Ansicht/Symbolleisten/Anpassen" ausführen
(Dialogfenster "Anpassen" öffnet sich)
2. Mit der linken Maustaste auf das Fragezeichen des Hilfe-Menüs klicken
(Menü Hilfe wird aufgeklappt)
3. Mit der rechten Maustaste den Menüeintrag "Info" anklicken
(Kontext-Menü wird eingeblendet)
4. Im Feld "Name:" den Text "Show VB Credits" eintragen
(bisher stand dort "Info")
5. Eingabe-Taste drücken (Kontext-Menü verschwindet)
6. Dialogfenster "Anpassen" schliessen
Wenn Sie nun den geänderten Menübefehl "Show VB Credits" anwählen,
öffnet sich ein Fenster mit einem animierten Himmel, fliegenden Bauklötzen und einer
Laufschrift mit den Namen der Produktteam-Mitarbeiter.
[6] ... man den VBA-Editor auch mittels Programmcode schliessen kann, indem
man im VBA-Programm die Anweisung "Application.VBE.MainWindow.Visible = False"
schreibt? Die Verwendung dieser Anweisung im Direktfenster ist dagegen nicht möglich bzw.
führt nicht zum erwarteten Ergebnis. Das VBA-Editor-Fenster wird zwar geschlossen, aber
nach Ausführen der Anweisung sofort wieder geöffnet.
[7] ... man die Beschreibung zu einer beliebigen Laufzeitfehlernummer
erhält, indem man im Direktfenster die Anweisung "Error" und die Fehlernummer
eingibt?
Beispiel:
Wenn sie wissen möchten, wie der Meldungstext der Fehlernummer 70 lautet, dann
geben Sie im Direktfenster "Error 70" ein und drücken die Eingabe-Taste. Es
erscheint ein Dialogfenster mit dem Text "Laufzeitfehler 70: Zugriff
verweigert".
[8] ... sich der VBA-Editor zum Vollbild vergrössern lässt, indem man in
die rechte untere Ecke eines maximierten Codefensters doppelklickt (siehe Abbildung)?

[9] ... das
Arbeitsblatt mit der Bezeichnung "Änderungsprotokoll" nicht im Projekt
Explorer-Fenster des VBA-Editors angezeigt wird? Das Blatt namens
"Änderungsprotokoll" wird von Excel automatisch - aber ausschliesslich für
interne Zwecke - angelegt.
[10] ... man
ein Modul oder ein Benutzerformular als Datei exportieren kann, indem man das gewünschte
Objekt mit Drag-and-Drop aus dem Projekt Explorer-Fenster direkt in einen Ordner im
Windows Explorer oder auf den Windows Desktop zieht?
Haben Sie Fragen,
Anregungen oder einen Fehler entdeckt?
Mail senden an philipp.von.wartburg@bluewin.ch
Zuletzt aktualisiert am
13.12.2005 / 23:00 Uhr
© 2002-2005 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten