Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03094.jsonl.gz/1411

© Silvia Rothen, rothen ecotronics, Bern, Schweiz
Autorin: Dr. Silvia Rothen, rothen ecotronics, Bern, Schweiz
Letzte Überarbeitung: 13.05.18
In Kursen und bei Beratungen in Firmen stosse ich immer wieder auf ähnliche Fragen zum Einsatz von Microsoft Office. In dieser Kolumne habe ich deshalb Tipps und Tricks aus meiner praktischen Erfahrung zusammengestellt. Der Schwerpunkt liegt vor allem bei Excel und Access und bei der Zusammenarbeit zwischen den verschiedenen Programmen. Im Normalfall beziehen sich die Tipps auf Office XP und 2003, vieles davon lässt sich in leicht abgewandelter Form aber auch in Office 97 oder Office 2000 anwenden.
- Beschriftung mit Formularfeld verknüpfen (97/2000/XP)
- Textdaten importieren (97/2000/XP)
- Schlüsselfeld in Formular sperren (97)
- Kombinationsfeld aus aktuellen Werten erstellen (2000)
- Anfügeabfrage und Löschabfrage mit Makro kombinieren (2000)
- Runden auf 5 Rappen (97 / 2000)
- Schaltflächen in Taskleiste (2000 / XP / 2003)
- Makros in VBA-Code umwandeln (97 / 2000 / XP / 2003)
- Runden auf 5 Rappen (97 / 2000 / XP / 2003)
- Ganze Spalte ausfüllen mit Doppelklick (97/2000/XP)
- Monate und Tage ausrechnen mit der Funktion DATEDIF (97/2000/XP/2003)
- Filter speichern mit Ansichten (97/2000)
- Fehlerindikator bei Zahlen als Text nicht anzeigen (XP)
- Mehrfacheingabe mit Ctrl + Return (97/2000/XP)
- Buchhaltungs- und Währungsformat (97/2000/XP)
- Symbolleiste für Berechnungen erstellen (97/2000/XP)
- Wo sind Symbolleisten gespeichert? (97/2000/XP/2003)
- Wo sind benutzerdefinierte Diagrammtypen gespeichert? (97/2000/XP/2003)
- Makros entfernen (97/2000/XP)
- Mit XML arbeiten (2003)
- Blattnamen in Zelle übernehmen (97/2000/XP/2003)
- Letzte Zelle für Ctrl + End anpassen (97/2000/XP/2003)
- Aus bestehendem Diagramm eine Vorlage machen (97/2000/XP/2003)
- Trendlinie in Diagramm einfügen (97/2000/XP/2003)
- Zweite Y-Achse in Diagramm einfügen (97/2000/XP/2003)
- Duplikate in Listen finden (97/2000/XP/2003)
- Duplikate in verschiedenen Tabellen finden (97/2000/XP/2003)
- Mit Formel 16-stellige hexadezimale Zufallsnummer erzeugen (97/2000/XP/2003)
- Mit der Formelüberwachung externe Bezüge nachvollziehen (2003)
- Genauigkeit von Zahlen (97/2000/XP/2003)
- Version des Betriebssystem auslesen mit INFO (97-2010)
- Unabhängige Pivots erstellen (ab 2007)
- Benutzerdefiniertes Zahlenformat für sehr kleine Zahlen
- Benutzerdefinierte Ansicht lässt sich nicht aktivieren
- Outlook-Daten sichern (97 / 2000)
- Weiteres Postfach öffnen (XP mit Exchange)
- Automatische Lesebestätigung zurücksetzen (XP)
- Excel-PivotTables aus Access-Daten erstellen (2000)
- Datumsformat in Serienbriefen mit Datenquelle Excel (XP)
- Option Explicit in Excel-Funktionen (Excel 97)
- SPAN-Tag einfügen in Frontpage (Frontpage 2000)
- Access-Ereignisprozeduren in Module auslagern (Frontpage 2000)
Access 97 / 2000 / XP
Eine Beschriftung zu einem Formulartextfeld, die gelöscht wurde, lässt sich zwar durch ein Bezeichnungsfeld ersetzen, doch diese neue Beschriftung ist nicht mehr mit dem Eingabefeld verknüpft und wird deshalb nicht mitverschoben, wenn man das Eingabefeld verschiebt. Diese Verknüpfung lässt wiederherstellen, indem man das neu erstellte Beschriftungsfeld mit Ctrl X ausschneidet, das Eingabefeld markiert und mit Ctrl C die Beschriftung einfügt. Von nun an sind Beschriftung und Eingabefeld wieder verknüpft.
Access 97 / 2000 / XP
Access kann zwar diverse Fremdformate direkt importieren, und ab Version 97 ist es möglich, Tabellen gar nicht mehr zu importieren, sondern zu verknüpfen, aber dennoch ist es gelegentlich notwendig, für Datentransfers auf das Textformat zurückzugreifen. Scherereien bereitet immer dann, wenn die Daten nicht von einem Windows-Rechner stammen und damit nicht den windows-spezifischen ANSI-Zeichensatz aufweisen. Ebenfalls problematisch sind Daten aus anderen Ländern, z.B. Zahlen aus Deutschland mit Dezimalkommas statt Dezimalpunkt oder amerikanische Datumswerte mit dem Format MM/TT/YYYY.
Beim Import solcher Daten in Access lässt sich das alles einstellen, allerdings ist das Dialogfenster dazu etwas versteckt. Der Einstieg für den Datenimport erfolgt über. Im nächsten Dialogfenster wechselt man unten im Kombinationsfeld auf und sucht sich die entsprechende Textdatei. Damit startet der Textimport-Assistent. Einstellungen wie Wechsel des Datumsformates oder des Zeichensatzes verstecken sich nun hinter der Schaltfläche unten links.
Das nächste Dialogfenster ermöglicht nun diverse Einstellungen für den Import von Textdateien:
Access 97
In den meisten Formularen möchte man den nicht veränderlichen Primärschlüssel einer Tabelle zwar anzeigen, aber das Eingabefeld sperren, so dass die Benutzer/innen nicht auf die Idee kommen, diesen Wert zu verändern.
Für die Anzeige eines solchen Schlüsselfeldes im Formular können Sie ein ganz normales Textfeld benutzen. Die Sperrung erreichen Sie, indem Sie in der Entwurfsansicht die Eigenschaft Nein setzen. Damit lässt sich das Feld nicht mehr mit der Maus oder dem Tabulator anspringen und ist somit auch nicht bearbeitbar. Ausserdem wird das Feld grau angezeigt, um den Unterschied zu Eingabefeldern auch optisch hervorzuheben.dieses Textfeldes auf
Allerdings ist dann auch die Bezeichnung grau. Das lässt sich beheben, indem man das Bezeichnisfeld ausschneidet, wieder einfügt und an die selbe Stelle verschiebt. Allerdings ist mit dieser Methode anschliessend das Bezeichnungsfeld nicht mehr mit dem Formularfeld verbunden.
Access 2000 (mit geringfügigen Änderungen auch Access 97)
Um die Eingabe in Formularen auf bestimmte Werte zu beschränken, greift man meistens zum Mittel des Kombinationsfeldes. Häufig möchte man dabei, dass sich die Liste automatisch aus den bereits verwendeten Werten ergibt. Dies ist möglich, bedingt aber, dass man zuerst eine Abfrage für die gewünschte Liste erstellt.
Wie man vorgeht, möchte ich am Beispiel einer Eingabemaske für Kundendaten erläutern. Das Land will man dabei mit einem Kombinationsfeld eingeben, wobei die Liste aus allen bereits getätigten Eingaben in diesem Feld bestehen soll. Als erstes erstellt man eine Abfrage mit den alphabetisch geordneten Ländern.
Wichtig ist bei dieser Abfrage, dass mit "Ist Nicht Null" in der Kriterienzeile leere Einträge ausgeschlossen sind und dass mit der Schaltfläche die Gruppierung eingeschaltet wird, damit jedes Land nur einmal erscheint. Anschliessend speichert man diese Abfrage z.B. unter dem Namen qrylaenderliste.
Als nächstes tauscht man im Eingabeformular das normale Eingabefeld für Land durch ein Kombinationsfeld aus. Dabei muss unbedingt der Steuerelementassistent eingeschaltet sein. Das Feld mit der Maus aufziehen. Achtung: Fangen Sie nicht am linken Rand des Formulars an, sonst bleibt links vom Kombinationsfeld kein Platz für eine Beschriftung.
Damit startet der Kombinationsfeld-Assistent. Bei den nächsten Dialogfenstern gibt man folgende Optionen ein:
- Oberste Option ausgewählt lassen, das heisst "Das Kombinationsfeld soll die Werte einer Tabelle oder Abfrage entnehmen"
- Bei "Aus welcher Tabelle oder.." die gewünschte Abfrage wählen, d.h. qrylaenderliste.
- Mit der Schaltfläche > das Feld Land in die ausgewählten Felder auf der rechten Seite spedieren
- Im nächsten Dialogfenster könnte man die Breite des Feldes korrigieren. Dies ist vermutlich unnötig.
- Unbedingt die untere Option, d.h. Land eingeben! , auswählen und den richtigen Feldnamen, z.B.
- Im Eingabefeld Land eingeben und mit der Schaltfläche Fertigstellen abschliessen eine sprechende Beschriftung, z.B.
Wenn Sie nun in die Formularansicht wechseln, dann haben Sie bereits ein funktionierendes Kombinationsfeld.
Allerdings hat dieses Kombinationsfeld noch einen kleinen Schönheitsfehler: Ein neuer Ländereintrag wird erst in der Liste angezeigt, wenn man das Formular das nächste Mal öffnet. Wenn man die Liste bereits während der Dateneingabe aktualisieren möchte, dann gibt es drei mögliche Lösungen:
- Man aktualisiert die Liste nach jedem Neueintrag von Hand mit dem Menü
- Man erstellt in der Entwurfsansicht des Formulars mit der Toolbox-Symbolleiste eine Befehlsschaltfläche. Wie beim Kombinationsfeld muss der Steuerelement-Assistent aktiviert sein. Nachdem man die Schaltfläche aufgezogen hat, kann man aus der Kategorie Länderliste aktualisieren benennen. Ein Klick auf diese Schaltfläche aktualisiert nach jedem Neueintrag die Liste. die Aktion auswählen. Im nächsten Schritt kann man die Schaltfläche z.B. mit
- Noch eleganter ist allerdings, wenn man eine VBA-Prozedur verwendet,
die
beim
Wechsel auf den nächsten Datensatz die Liste von selbst aktualisiert. Dazu
hängt man z.B. an das Ereignis Form_AfterUpdate() mit einer einzigen Codezeile, was folgende Prozedur
ergibt:
Private Sub Form_AfterUpdate()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, _
5, , acMenuVer70
End Sub
des Formulars eine Ereignisprozedur
Access 2000 (mit geringfügigen Änderungen auch Access 97)
Gelegentlich möchte man Daten aus einer Tabelle in eine andere verschieben und anschliessend die Daten in der alten Tabelle löschen. Manchmal kommt es vor, dass man dies immer wieder mit denselben Tabellen tun muss, z.B. wenn man alte Daten in eine Archivtabelle verschiebt. Nun gibt es zwar in Access für diesen Zweck Tabellenerstellungs-, Anfüge- und Löschabfragen, aber keine Aktionsabfrage, die das Anfügen und Löschen kombiniert. Damit schafft man eine potentielle Fehlerquelle, sei es dass die Reihenfolge dieser zwei Abfragen nicht eingehalten wird, sei es, dass nur eine der zwei Abfragen ausgeführt wird. Um dies zu verhindern, kann man die zwei Abfragen mit einem Makro zusammenhängen und anschliessend auf einem geeigneten Formular eine Schaltfläche zur Verfügung stellen, welche diesen Makro auslöst.
Dieser Makro enthält, wie man im Screenshot sieht, nur zweimal hintereinander die Aktion qrykundenarchivieren und dann qryarchivkundenloeschen.. Im unteren Teil des Fensters werden neben Abfragename die zwei Abfragen ausgewählt, also z.B. zuerst
Access 97 / 2000
Wie in Excel benötigt man auch in Access gelegentlich eine Rundung auf 5 Rappen. Das Grundprinzip ist das gleiche wie bei Excel, nämlich Zahl verdoppeln, mit einer Funktion auf eine Dezimalstelle runden und ausserhalb der Funktion wieder durch 2 teilen. Allerdings gibt es in Access die äusserst praktische Funktion RUNDEN nicht, man muss die Funktion FORMAT verwenden. In Access 2000 sieht die Formel folgendermassen aus:
Format([nettoumsatz]*2;"0.0")/2
In Access 97 wird das ganze noch etwas komplizierter. Vermutlich infolge eines Bugs funktioniert unter der Schweizer Ländereinstellung der Formatcode "0.0" nicht, sondern nur "0,0". Unglücklicherweise ist das Ergebnis dann aber ein Text, nicht eine Zahl, so dass man noch die Funktion WERT benötigt, um das Resultat wieder in eine Zahl zurückzuverwandeln. Für Access 97 unter einer Schweizer Ländereinstellung sieht die Formel also folgendermassen aus:
Wert(Format([nettoumsatz]*2;"0,0")/2)
Access 2000 / XP / 2003
In Access lässt sich entweder für die ganze Datenbank nur eine einzige Schaltfläche in der Taskleiste anzeigen oder pro geöffnetes Datenbankobjekt je eine. Umschalten lässt sich dies im Menü- Register .
Access 97 / 2000 / XP / 2003
In Access gibt es zur Programmierung einfacher Abläufe Makros. Damit lässt sich Routinearbeit rasch automatisieren. Allerdings fehlt den Makros ausser Bedingungen eigentlich alles, was zu einer richtigen Programmiersprache gehört. Deshalb stösst man sehr schnell an die Grenzen dessen, was mit Makros in Access umsetzbar ist. Ihr Vorteil ist allerdings, dass man sich viel mühsame Tipparbeit sparen kann, weil man sich das gewünschte mit Kombinationsfeldern zusammenklickt.
Eine effiziente Arbeitsweise ist es deshalb, sich diese Routineschritte als Makro zusammenzuklicken, dann den Makro in VBA-Code umzuwandeln und anschliessend in VBA weiterzuprogrammieren.
Vorgehen für die Umwandlung von Makros in VBA:
- In der Objektleiste zu wechseln,
- den gewünschten Makro anklicken (nicht doppelklicken, nur auswählen!)
- im Menü wählen
- einen Funktionsnamen vergeben, unter zu wechseln und mit OK abschliessen
Excel 97 / 2000 / XP / 2003
Eine schweizerische Besonderheit ist das Runden auf 5 Rappen. Normalerweise benutzt man für die Rundung die Excelfunktion RUNDEN(). Mit dieser lässt sich zwar mit =RUNDEN(A1; 0) auf ganze Franken oder mit dem zweiten Argument der Funktion auf beliebig viele Dezimalstellen runden, nicht aber auf 5 Rappen. Auf folgende Art und Weise kann man es trotzdem realisieren. Weil 10 Rappen das Doppelte von 5 Rappen sind, wird die Zahl innerhalb der Funktion RUNDEN verdoppelt und auf eine Dezimalstelle (eben Zehner) gerundet. Weil die Zahl nun doppelt so gross ist wie sie sollte, muss man sie wieder durch Zwei teilen und zwar ausserhalb der Funktion. Wenn wir annehmen, dass sich die zu rundende Zahl in Zelle A1 befindet, dann ergibt sich folgende Formel:
=RUNDEN(A1*2;1)/2
Excel 97 / 2000 / XP
Die meisten Leute wissen, dass man mit dem Ausfüllkästchen einen Zellinhalt oder eine Formel in andere Zellen kopieren kann, indem man das Ausfüllkästchen mit der Maus in die gewünschte Richtung zieht. Bei grossen Tabellen ist dieses Verfahren allerdings umständlich. Muss eine Spalte ergänzt werden, lässt sich das gleiche auch mit einem Doppelklick auf das Ausfüllkästchen erledigen, sofern die Spalte links davon lückenlos ausgefüllt ist. Dieser Doppelklick kopiert den Inhalt der markierten Zeile bis zur nächsten Leerzeile in alle Zellen unterhalb der Markierung.
Excel 97 - 2003
Eine Firma verrechnet ihren Kunde für die Nutzung einer Dienstleistung eine Grundgebühr pro Monat. Überzählige Tage werden dabei prozentual verrechnet. Um die effektiven Gebühren zwischen 2 Datumswerten berechnen zu können, muss man die Anzahl Monate sowie die überzähligen Tage berechnen. Dafür gibt es die Funktion DATEDIF. Diese Funktion ist leider in der Hilfe (zumindest in jener von Excel 2003) nicht dokumentiert und nicht über den Funktionsassistenten zugänglich. Ungewöhnlich ist ausserdem, dass sie nicht lokalisiert ist, d.h. der Funktionsname und die Argumente in allen Sprachversionen identisch.
Die Funktion hat 3 Argumente
1) Anfangsdatum
2) Enddatum
3) Formatcode, der angibt, ob man die Differenz als Jahr, Monat, etc ausgeben möchte
Gängige Werte für die Formatcodes:
"Y" -> als Jahre
"YM" -> als restliche Monate, die über die Jahre hinausgehen
"M" -> als Monate
"MD" -> als restliche Tage, die über die Monate hinausgehen
"D" -> als Tage
Excel 97 / 2000
Bei grösseren Listen und komplizierteren Filtern möchte man im Autofilter nicht jedes Mal die gewünschten Filterkriterien einzeln setzen. Gesetzte Filter lassen sich mit dem Ansichten-Werkzeug lassen sich gemeinsam mit anderen Fenstereinstellungen speichern. Dieses Werkzeug findet man unter.
Mit der Schaltflächespeichert man in diesem Dialogfenster die aktuellen Einstellungen. Die Schaltfläche setzt falls nötig den Autofilter und die einzelnen Filtereinstellungen.
Excel XP
Ab Office XP zeigt Excel bei potentiellen Fehlern einen grünen Fehlerindikator und ein Smarttag an. Leider schiesst die Fehlerüberprüfung etwas übers Ziel hinaus und markiert z.B. auch Zahlen, die absichtlich mit Apostroph als Text eingegeben wurden, z.B. Telefonnummern oder Jahrzahlen als Spaltenbeschriftung. Glücklicherweise lässt sich dies in den Optionen abstellen:- Register abwählen.
Excel 97/2000/XP
Mit folgendem Trick kann man einen Wert oder eine Formel in mehrere Zellen gleichzeitig eingeben:
- Alle Zellen markieren (nicht zusammenhängende Bereiche mit Ctrl)
- Die Formel oder den Wert eingeben, ohne die Eingabe mit Return abzuschliesen
- Statt Return die Tastenkombination Ctrl und Return gleichzeitig drücken.
Excel 97/2000/XP
Viele Benutzer/innen greifen für Zahlen mit einer Währungsanzeige sofort zum Währungsformat, weil sie nichts anderes kennen. Das Buchhaltungsformat liefert aber in vielen Fällen ein ästhetisch befriedigenderes Resultat, weil die Tabellen weniger unruhig werden. Man findet das Buchhaltungsformat unter- Register - .
Vorteile des Buchhaltungsformats
- Die Währung ist links- und die Zahl rechtsbündig
- Währung und Zahl kleben nicht am Zellenrand, sondern sind um ein Zeichen eingezogen
- Die Null wird unterdrückt
Nachteile des Buchhaltungsformats
- Negative Zahlen lassen sich nicht rot formatieren
Excel 97/2000/XP
Formeln gibt man am Besten direkt mit der Maus ein, weil man so weniger Fehler macht als wenn man die Bezüge von Hand eintippt. Für Berechnungen ergibt sich so allerdings ein ständiges Hin und Her zwischen Tastatur und Maus, weil Operationszeichen wie * oder / nicht mit der Maus eingegeben werden können. Abhilfe schafft eine benutzerdefinierte Symbolleiste, auf der alle Operationszeichen vorhanden sind.
Vorgehen: Menü Rechnen
- ins Register
wechseln - in der Kategorie
die Schaltflächen ab
suchen - mit gehaltener linker Maustaste auf die neu erstellte Symbolleiste
ziehen. Den letzten Schritt solange wiederholen, bis alle Operationszeichen auf
der neuen Symbolleiste sind (siehe Abbildung).
Sobald man auf die Schaltflächeklickt, wird das Dialogfenster geschlossen und die Symbolleiste lässt sich benutzen. Damit kann man fast alle Formeln nur mit der Maus eingeben.
Excel 97 / 2000 / XP / 2003
Wenn Änderungen an bestehenden Symbolleisten gemacht oder benutzerdefinierte Symbolleisten erstellt werden, dann werden diese in einer Datei mit der Endung .xlb gespeichert. Der Dateiname beginnt mit "Excel", gefolgt von der Versionsnummer und der Endung. Für Excel 2003 heisst das z.B. Excel11.xlb.
Diese Datei befindet sich im Benutzerprofil, d.h. im Ordner "Dokumente und Einstellungen" im Unterordner der Benutzerin unter Anwendungsdaten\Microsoft\Excel. Das bedeutet, dass die Symbolleisten pro Benutzer für alle Arbeitsmappen gelten.
Wenn diese Datei defekt ist, lässt sich Excel nicht mehr richtig starten. Beim Öffnen erscheint bereits die Meldung "Die Anwendung wird geschlossen". Dann kann man die Datei suchen und umbenennen. Beim nächsten Start von Excel wird wieder eine xlb-Datei erstellt. Allerdings sind dann die Änderungen an Symbolleisten verloren.
Excel 97 / 2000 / XP / 2003
Wenn in Excel benutzerdefinierte Diagrammtypen erstellt werden, so werden diese in der Datei Xlusrgal.xls im Verzeichnis \Dokumente und Einstellungen\Username\Anwendungsdaten\Excel gespeichert.
Excel 97 / 2000 / XP
Bei mittlerer Makrosicherheit muss man bei jedem Öffnen von Arbeitsmappen mit Makros die Aktivierung von Makros bestätigen. Manchmal sind diese Makros unnötig, weil sie durch das Kopieren einer Vorlage mit Makros unbeabsichtigt in die Arbeitsmappe gelangt sind.
Achtung: Wenden Sie die folgende Technik nur an, wenn Sie sicher sind, dass alle Makros in einer Arbeitsmappe überflüssig sind.
Zum Löschen von überflüssigen Modulen mit Makros gehen Sie folgendermassen vor:
- Im Projekt-Explorer oben links die aktuelle Datei unter suchen (siehe Abbildung)
- Wenn Makros vorhanden sind, gibt es Unterordner mit mindestens einem Modul
- Rechtsklick auf dieses Modul - in Kontextmenü wählen - die Frage nach Export mit beantworten
Excel 2003
XML (eXtended Markup Language) ist eine Metasprache zum Verwalten von hierarchischen Daten. Informationen und ihre Struktur werden dabei im gleichen Dokument gespeichert, indem die Strukturinformationen (entspricht Feldnamen und ihren Datentypen in Datenbanken) in spitzen Klammern, sogenannten Tags, rund um die Daten platziert werden. Das könnte etwas so aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="User.xsd" generated="2005-01-20T10:15:56">
<tblU_User>
<UserNr>1</UserNr>
<UserName>Silvia Rothen</UserName>
</tblU_User>
<tblU_User>
<UserNr>2</UserNr>
<UserName>Testuser</UserName>
</tblU_User>
</dataroot>
XML kann in der Version 2003 nicht nur zum Speichern ganzer Dokumente verwendet werden, sondern um eine Datenstruktur über ein Dokument zu legen, so dass man anschliessend die Möglichkeit hat, fast wie bei einer Datenbank gezielt auf bestimmte Daten zuzugreifen. XML-Dateien werden immer wichtiger als Import- und Exportformat für Datenbanken und für den Datentransport via Internet. Da XML-Dateien im Gegensatz zu den binären Dateien von Word- oder Excel-Dokumenten im Textformat vorliegen, eignen sie sich für die langfristige Archivierung.
Es lassen sich in Office 2003 sowohl direkt XML-Daten einlesen oder Schemas.
Begriffe in Englisch und Deutsch
Da die Beispiele von Microsoft meist in Englisch daherkommen, hier die wichtigsten Übersetzungen:
|Englisch||Deutsch|
|Schema||Schema|
|XML-Maps||XML-Verknüpfungen, XML-Zuordnungen|
|XML-Source||XML-Quelle|
Direkt XML-Daten importieren
- Den Aufgabenbereich XML-Quelle öffnen mit
- Schaltfläche unten rechts im Aufgabenbereich anklicken
- Im Dialogfenster XML-Zuordnungen auf klicken und eine XML-Datei anklicken. Falls die Meldung erscheint, dass ein Schema erstellt werden soll, klicken Sie auf OK.
- Sie sehen nun im Aufgabenbereich die Baumstruktur der importierten XML-Daten. Eine Erklärung zu den verschiedenen Symbolen (z.B. Attribut, wiederholt, erforderlich) erhalten Sie mit dem Link
- Ziehen Sie nun die gewünschten Felder mit der Maus aus dem Arbeitsbereich in das Arbeitsblatt. Wenn Sie oberhalb oder links eine Zeile oder Spalte frei lassen, können Sie mit dem SmartTag automatisch eine Beschriftung erzeugen.
- Mit dem Kontextmenü lassen sich nun die verbundenen Daten anzeigen
Schema und anschliessend XML-Daten importieren
Das Vorgehen ist dasselbe wie beim direkten Import, aber beim Schritt 3 klickt man eine Schema-Datei an (Endung .xsd) und nach dem 5. Schritt importiert man die zugehörigen Daten mit.
Bestehende Daten in Arbeitsmappen mit XML-Schema verbinden
Interessant ist XML vor allem, um wichtige Unternehmensdaten aus
unstrukturierten Dokumenten wie Word-Texten oder Excel-Arbeitsmappen zu
extrahieren und damit auch für den späteren Zugriff zu retten.
Vorbedingung ist, dass es für die Daten, die aus einer Arbeitsmappe extrahiert werden sollen, bereits ein Schema gibt.
Dazu verbinden Sie ein Schema mit einer bestehenden Arbeitsmappe wie weiter oben beschrieben.
- Für einzelne Datensätze zieht man die einzelnen Elemente im Arbeitsbereich auf die einzelnen Zellen mit den Daten.
- Für wiederholte Datensätze in Listen zieht man die einzelnen Elemente oder (wenn die Reihenfolge stimmt) das übergeordnete Element auf die Beschriftungszeile am Anfang der Liste.
Vialassen sich anschliessend die relevanten Daten als XML exportieren.
Sind die XML-Elemente einmal mit den Excel-Daten verbunden, dann lässt sich mit dem Aufgabenbereich gezielt auf die Daten zugreifen, indem man auf das gewünschte Element im Aufgabenbereich klickt.
97/2000/XP/2003
Mit folgender Formel lässt sich der Blattname in eine beliebige Zelle übernehmen:
=RECHTS(ZELLE("Dateiname";A1);LÄNGE(ZELLE("Dateiname";A1))
-SUCHEN("]";ZELLE("Dateiname";A1)))
=ZELLE("Dateiname";A1) liefert den Pfad, Dateinamen und Blattnamen in einem String, z.B. C:\Dateien\[test.xls]Tabelle1. Mit den Funktionen SUCHEN, RECHTS und LÄNGE wird das Trennzeichen ] zwischen Dateiname und Blatt gesucht und der rechte Teil des Strings abgetrennt.
Achtung: Die Formel bleibt leer, solange die Arbeitsmappe nicht gespeichert wurde!
97/2000/XP/2003
Mit Ctrl + End kann man normalerweise auf die letzte ausgefüllte Zelle springen (bzw. den Kreuzungspunkt zwischen letzter Spalte und letzter Zeile mit Einträgen). Wenn man die letzten Spalten oder Zeilen weglöscht, funktioniert dies allerdings nicht mehr, der Cursor springt immer noch an die alte Stelle. Sobald man einmal gespeichert hat, funktioniert es allerdings wieder.
97/2000/XP/2003
Gelegentlich möchte man ein Diagramm, das man liebevoll erstellt hat, als Vorlage für weitere Diagramme nutzen. Das geht folgendermassen:
- Rechtsklick auf Diagramm -
- Register - Schaltfläche anklicken
- Einen Namen und evtl. eine Beschreibung eingeben - OK
- Von nun an steht die Vorlage im Diagrammassistent als neuer Diagrammtyp zur Verfügung, wenn man das Register und wählt (siehe Screenshot)
97/2000/XP/2003
Eine lineare, logarithmische oder sogar polynomische Trendlinie fügt man in ein Exceldiagramm ein, indem man auf der gewünschten Datenreihe einen Rechtsklick macht und im Kontextmenüauswählt.
Achtung: Diese Möglichkeit steht nur für die Diagrammtypen Linien-, Balken-, Säulen- und Punktdiagramm zur Verfügung, nicht aber im Flächendiagramm.
97/2000/XP/2003
Wenn die Daten in 2 Datenreihen ungleich gross sind, dann empfiehlt es sich, die kleinere der Datenreihen auf eine anders skalierte Y-Achse zu nehmen.
Vorgehen: Rechtsklick auf die kleinere Datenreihe -- Register
97/2000/XP/2003
In grossen Listen werden immer wieder aus Versehen Datensätze doppelt eingetragen, wobei sie sich oft in gewissen Spalten unterscheiden. Beispielsweise wird bei einer Adressänderung ein Mitglied neu eingetragen, statt dass die alte Zeile mutiert wird oder bei einem Import von Artikeldaten werden gewisse Artikel zweimal erfasst.
Eine Möglichkeit ist es, mit dem Spezialfilter solche Duplikate farbig zu kennzeichnen. Eine sehr schöne Beschreibung, wie man das macht, findet sich im PCtipp. Die vorgeschlagene Methode hat allerdings zwei Nachteile: Farbig wird immer nur der zweite der doppelten Datensätze und man kann keinen Autofilter anwenden.
Die folgende Methode verwendet eine Hilfsspalte und die Funktion ZÄHLENWENN, so dass anschliessend mit dem Autofilter alle Datensätze mit Differenzen angezeigt werden können.
Voraussetzungen
- Es liegt eine korrekte Excel-Liste vor (Beschriftungen in Zeile oberhalb von Datenbereich, keine Leerzeilen)
- Es gibt eine Spalte, anhand derer die Duplikate gesucht werden können, z.B. eine Artikel- oder eine Mitgliedernummer in der Spalte A.
Vorgehen
- Erstellen Sie zuhinterst in der Liste eine Spalte namens Duplikate.
- Benutzen Sie nun die Funktion ZÄHLENWENN, um zu Zählen, wie oft eine
Mitgliedernummer in der Spalte insgesamt vorkommt. Das erste Argument ist die
gesamte Spalte, und zwar mit absoluten Bezügen, das zweite der einzelne Wert
in dieser Spalte. Wenn der Datenbereich der Liste in Zeile 26 anfängt und die
Mitgliedernummer in Spalte A steht, dann ergibt dies z.B.
=ZÄHLENWENN($A$26:$A$404;A26)
Für Duplikate wird der Wert in dieser Spalte > 1
- Mit dem Autofilter lassen sich nun die Datensätze bequem herausfiltern, die mehrfach vorhanden sind: Duplikat ist grösser als 1 eingeben. - Kombinationsfeld in der Spalte Duplikate öffnen, wählen und
- Wer es ganz gediegen haben möchte, kann sich noch eine bedingte Formatierung erstellen, damit die Datensätze auch optisch gleich ins Auge stechen: Menü =$D26>1 (wenn die Duplikatsspalte in Spalte D ist und der Datenbereich der Liste ab Zeile 26 beginnt)
Klicken Sie hier, um eine Arbeitsmappe mit einer Musterlösung herunterzuladen.
97/2000/XP/2003
Im wesentlichen geht es um das gleiche Problem wie oben, aber dieses Mal kommen die Duplikate nicht in derselben Liste vor, sondern es sollen zwei (oder mehrere) Listen in verschiedenen Tabellenblättern (oder sogar Dateien) darauf geprüft werden sollen, ob Duplikate vorkommen. Wenn es nicht möglich ist, die Daten in eine gemeinsame Liste zu kopieren, dann empfiehlt sich eine Problemlösung mit der Funktion VERWEIS. VERWEIS ist insofern flexibler als SVERWEIS, weil die Spalte mit dem Schlüsselfeld, z.B. der Mitgliedernummer, nicht in der 1. Spalte stehen muss
Vorgehen
- Beide Tabellen öffnen und bei der grösseren Tabelle eine Hilfsspalte namens Duplikate einfügen
- In diese Spalte kommt nun eine Formel der folgenden Art
=WENN(ISTFEHLER(VERGLEICH(C15;'H Dupl'!$C$4:$C$7;0));"nein";"ja")
Die Funktion VERGLEICH sucht nach einem bestimmten Wert in einer Zeile oder Spalte. C15 ist die Zelle in der aktuellen Tabelle, in der die Mitgliedernummer steht, 'H Dupl'!$C$4:$C$7 ist die ganze Spalte in der 2. Tabelle, in der die Mitgliedernummern stehen, 0 besagt, dass nur nach genauen Übereinstimmungen gesucht wird. Mit WENN und ISTFEHLER wird überprüft, ob die Funktion VERGLEICH etwas gefunden hat.
- Die restlichen Schritte bleiben gleich wie oben: Mit dem Autofilter kann man nun alle Datensätze filtern, die in der anderen Liste vorkommen und mit der bedingten Formatierung kann man sie farbig hervorheben.
Klicken Sie hier, um eine Arbeitsmappe mit einer Musterlösung herunterzuladen.
PS: Ein Nachteil dieser Lösung ist es, dass die Formel schnell beliebig kompliziert wird, wenn mehr als zwei Tabellen verglichen oder aufgrund von mehr als einer Spalte verglichen werden sollen. Bei mehreren Tabellen ist auch noch eine Lösung denkbar, die auf den folgenden Tools beruht:
- Konsolidierung
- Autofilter
- Spezialfilter
Diese Lösung wird nicht speziell vorgestellt, sie ist aber in der herunterladbaren Datei skizziert. Für diese Lösung ist es übrigens zwingend, dass die Mitgliedernummer in der ersten Spalte steht.
97/2000/XP/2003
Um eine 16-stellige Nummer mit einer Excelformel zufällig zu erzeugen, benötigt man eine Formel, um eine Hexstelle zufällig erzeugen, die man dann so oft wie benötigt verkettet.
Formel für eine zufällige einstellige hexadezimale Nummer:
=DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))
Diese Formel wird nun 16 Mal verkettet:
=DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))
&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))
&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))
&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))
&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))
&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))
&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))
&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))&DEZINHEX(GANZZAHL(ZUFALLSZAHL()*16))
Um komplizierte Berechnungen nachzuvollziehen, kann man die Symbolleiste Formelüberwachung einblenden und die Spur zu den Vorgängern durch mehrmaliges Anklicken der Schaltfläche "Spur zum Vorgänger" mit farbigen Pfeilen anzeigen lassen.
Dabei lässt sich, wie man im folgenden Screenshot sieht, sogar ein Bezug auf einer anderen Tabelle anspringen, indem man den gestrichelten Pfeil doppelklickt.
Excel 97/2000/XP/2003
Wer schon einmal versucht hat, in Excel mit sehr grossen oder sehr kleinen Zahlen zu rechnen, wird feststellen, dass diese Zahlen gerundet werden. Das liegt daran, dass Excel zwar mit Zahlen bis zu 10^307 umgehen kann, aber die Rechengenauigkeit beträgt nur 15 Stellen.
Eine gute Quelle zu dieser und weiteren Beschränkungen von Excel ist http://www.xlam.ch/xlimits/excel-new.htm.
Excel 97 bis 2010
Mit der Formel =INFO("Sysversion") kann man die aktuelle Windows-Version auslesen. Allerdings ist mir im Selbstversuch auf meinem Notebook mit 64-Bit Windows 7 die folgende Diskrepanz aufgefallen:
Excel behauptet hartnäckig, es handle sich um eine 32-Bit Version, während Windows auf 64-Bit beharrt! Wer lügt? Ich kann mir das eigentlich nur damit erklären, dass ich zwar ein 64-Bit-Windows habe, aber eine 32-Bit-Office-Version. Ich nehme deshalb an, dass Excel nicht die aktuell vorhanden OS-Version anzeigt, sondern den Betriebssystemmodus, unter dem es läuft, d.h. den 32-Bit-Modus. Testen kann ich das allerdings nicht, da mir keine 64-Bit-Office-Version zur Verfügung steht.
Ab Excel 2007
Vor der Version 2007 wurde man von der zweiten PivotTable an, die auf den
gleichen Daten erstellt wurde, gefragt, ob diese voneinander unabhängig sein
sollten. In den neueren Excel-Versionen ist diese Option beim Erstellen eines
weiteren Pivots verschwunden.
In einer neueren Excel-Version sind alle Pivots miteinander abhängig. Dies merkt man spätestens dann, wenn man zwei nach derselben Datumsspalte gruppierte Pivots benötigt, wobei der eine nach Monaten und der zweite nach Jahren gruppiert werden soll. Sobald man den einen Pivot entsprechend gruppiert, ändert sich auch die Gruppierung des andern.
Nur mit einem Trick lassen sich unabhängige Pivots wie in den alten Excel-Versionen erstellen: Mit der Tastenkombination Alt N P kann man den alten PivotTable-Assistenten hervorzaubern. Sobald man den zweiten Pivot auf diese Art erstellt, erhält man auch die alte Option wieder und kann voneinander unabhängige PivotTables erzeugen, indem man die Frage im zusätzlichen Dialogfenster (siehe Screenshot) mit Nein beantwortet.
Alle Excel-Versionen
Bei der Verwendung der Regressionsfunktion bin ich darüber gestolpert, dass gewisse statistische Werte recht klein werden können. Excel wechselt dann automatisch ins Wissenschaftsformat.
Im vorliegenden Fall ist das aber je nach Ausgangsdaten gar nicht notwendig, da die Zahl noch als Dezimalzahl mit drei Nachkommastellen dargestellt werden kann. Mit dem folgenden Code kann man benutzerdefinierte Zahlenformate erstellen, die automatisch zum Wissenschaftsformat wechseln, wenn die Zahl < 0.001 ist:
[<0.001]0.000E+00;[>=0.001]0.000
Vorgehen: Zellen mit Zahlen markieren - Rechtsklick - Zellen formatieren - Register Zahlen - Benutzerdefiniert - unter "Typ" das Format von oben eingeben (mit eckigen Klammern).
Sobald auf irgeneinem Blatt einer Arbeitsmappe mit "Einfügen - Tabelle" ein Tabellenbereich erstellt wurde, lassen sich keine benutzerdefinierten Ansichten mehr erstellen. Man muss sich also in einer Mappe entscheiden, ob man alle Tabellenbereiche entfernt oder auf die benutzerdefinierten Ansichten verzichtet.
Outlook 97 / 2000
Outlook ist ein toller Alleskönner, der dazu verlockt, immer mehr in Outlook abzulegen. Bald einmal stellt sich die Frage, wo denn die Outlook-Daten eigentlich abgelegt sind und wie man sicherstellen kann, dass sie gesichert werden.
Alle Outlook-Daten befinden sich in den folgenden zwei Dateien:
- outlook.pst (die aktuellen Daten)
- archiv.pst (die archivierten Daten)
Je nach Betriebssystem und Outlook-Version befindet sich diese Datei in verschiedenen Verzeichnissen, so dass Sie sie am besten mit der Suchfunktion des Windows-Explorers lokalisieren.
Am besten ist es, diese zwei Outlook-Dateien in Verzeichnisse zu verschieben, für die standardmässig ein Backup erstellt wird. In den Menüs und Optionen von Outlook sucht man allerdings vergeblich nach einer Möglichkeit, diese zwei Dateien in ein anderes Verzeichnis zu verschieben. Es geht nur mit brachialer Gewalt: Outlook schliessen, Dateien im Windows-Explorer lokalisieren, in gewünschtes Verzeichnis verschieben. Beim nächsten Öffnen fragt Outlook, wo die Datei outlook.pst geblieben ist, und ermöglicht Ihnen, den Pfad zur verschobenen Datei anzugeben.
(XP mit Exchange)
Wenn man mit Outlook an einen Exchange-Server angeschlossen ist, dann lassen sich auch Postfächer von anderen Personen öffnen und damit deren Terminkalender, Mails etc. einsehen. Dazu muss diese andere Person ihr Postfach und alle weiteren Ordner erst freigeben, indem sie einen Rechtsklick auf den Ordner macht,auswählt, und im Register die entsprechende Berechtigung hinzufügt (Das Register existiert nur, wenn Exchange vorhanden ist).
Das freigegebene Postfach lässt sich nun einbinden, indem man ins Menügeht, im ersten Schritt die Standardauswahl belässt, mit Weiter zum nächsten Schritt wechselt, die Schaltfläche und im nächsten Fenster anklickt. Im Register lässt sich mit dann das weitere Postfach einfügen.
Outlook XP (2002)
Outlook-Mails lassen sich mit der Option "Lesebestätigung" verschicken. Wer das erste Mal ein solches Mail erhält, wird in einem Dialogfenster gefragt, ob eine Bestätigung verschickt werden soll und ob in Zukunft diese Bestätigungen ohne Rückfrage automatisch erfolgen sollen. Wer diese Option ankreuzt, ohne gross nachzudenken, kann sie später folgendermassen zurücksetzen:
Menü- - Register - Schaltfläche - Schaltfläche - Optionsschaltflächen im unteren Teil des Fensters auf oder zurücksetzen.
Access 2000 / Excel 2000
Access kennt zwar für Auswertungen nach mehreren Kriterien (z.B. Umsatz nach Ländern und Produkten) die sogenannten Kreuztabellenabfragen. Diese entsprechen in Excel den Pivottabellen (Pivottabellen hiessen früher auch Kreuztabellen). Pivottabellen in Excel sind allerdings sehr viel flexibler und bieten mehr inhaltliche und gestalterische Möglichkeiten als Kreuztabellenabfragen in Access. Deshalb macht es Sinn, die Daten in Access zu halten, für kompliziertere Auswertungen aber Excel zu verwenden. Dies wird in Microsoft Office schon seit einigen Versionen unterstützt. Das Zusammenspiel beruht nicht auf einem Datenimport, sondern auf einer Verknüpfung mit den Access-Originaldaten.
Vorgehen:
- Öffnen Sie Microsoft Excel
- Wählen Sie das Menü
- Im 1. Schritt des Assistenten wechseln Sie auf
- Im 2. Schritt klicken Sie auf die Schaltfläche
- Im Register des Dialogfensters klicken Sie an und dann
- Im nächsten Dialogfenster wechseln Sie in das Verzeichnis, wo die Access-Datenbank liegt, wählen die gewünschte Datei an (Endung .mdb) und klicken OK an
- Im Query-Assistenten wählen Sie die Tabelle oder Abfrage mit den der
Auswertung zugrunde liegenden Daten aus und übernehmen mit der
Schaltfläche > alle Felder in
- Die nächsten drei Dialogfenster können Sie auf den Standardeinstellungen belassen. Wenn Sie auf dem letzten Dialogfenster die Schaltfläche anklicken, landen Sie wieder auf dem PivotTable-Assistenten im Schritt 2, mit dem Unterschied, dass nun Daten gefunden wurden.
- Im Schritt 3 klicken Sie ebenfalls auf
- Nun können Sie eine normale Pivottabelle erstellen, indem Sie die Felder
aus der Symbolleiste PivotTable in die richtigen Bereiche ziehen. In einer
Kundentabelle eignet sich das Feld Land z.B. als Zeilenfeld, das Feld
Geschlecht als Spaltenfeld und Umsatz als Datenfeld.
- Sie können die resultierende PivotTable nun mit besseren Zahlenformaten versehen, Zeilen- und Spalten tauschen, Kategorien ein- und ausblenden, d.h. Sie haben alle Gestaltungsmöglichkeiten zur Verfügung, die eine PivotTable mit Exceldaten auch bietet.
- Solange nun die Access-Datei nicht auf in ein anderes Verzeichnis
verschoben oder umbenannt wird, lassen sich mit der Schaltfläche Daten
aktualisieren jederzeit die neuesten Daten aus Access in die fertige
Excel-PivotTable holen.
In Word XP klappt in der deutschen Version bei Serienbriefen mit einer Excel-Datenquelle die Übernahme von Daten im Datumsformat nicht mehr. Sie werden trotz anderer Ländereinstellung im amerikanischen Format angezeigt.
Es gibt zwei Lösungen für dieses Problem:
- Man formatiert das Feld mit dem Datumswert nachträglich mit dem richtigen
Format. Dazu muss man die Feldfunktionen anzeigen mit
{MERGEFIELD "Eintrittsdatum" \@ "d.MM.yyyy"}
Vorteil dieser Methode ist, dass man das Datum beliebig umformatieren kann, z.B. den Wochentag anzeigen etc. In der Hilfe findet man Genaueres mit dem Stichwort "Feldschalter". Nachteilig ist, dass man die Formatierung für jede Datumsspalte einzeln eingeben muss.
- Register . Anschliessend ergänzt man das Feld mit dem Format, z.B.
- Man wechselt beim Import auf den Importfilter DDE. Damit man den Importfilter
überhaupt auswählen kann, muss man auf Bestätigung der Konvertierung umschalten mit
Beim Verbinden mit der Datenquelle erhält man nun ein zusätzliches Dialogfenster, wo man auswählt.
Damit werden die Datumswerte im richtigen Format übernommen. Allerdings funktioniert diese Methode nur, wenn die Daten auf dem ersten Tabellenblatt liegen. Eine Auswahl der Blätter ist nicht möglich.
- Register .
Excel 97
Mit dem Befehl Option Explicit am Anfang eines VBA-Programms erzwingt man, dass Variablen deklariert werden müssen. Dies gehört zu guter Programmierpraxis und sollte immer von Anfang an berücksichtigt werden.
Über einen bösartigen Bug in diesem Zusammenhang bin ich gestolpert, als ich bei einem VBA-Projekt in Excel 97 Option Explicit nachträglich eingeführt habe. In VBA-Prozeduren ist dies kein Problem: Wenn die Deklaration einer Variablen vergessen wurde, bricht der Interpreter beim Testen des Makros mit einem Hinweis auf die fehlende Deklaration ab.
Nun lassen sich in Excel mit VBA nicht nur Makro-Prozeduren erstellen, sondern auch benutzerdefinierte Tabellenfunktionen. Diese Funktionen lassen sich anschliessend in den Excel-Tabellen genauso verwenden wie die eingebauten Funktionen, z.B. SUMME(..) oder RUNDEN(..). Das fiese ist nun, dass bei nachträglicher Einführung von Option Explicit der Interpreter bei fehlenden Variablendeklarationen in Funktionen keine Fehlermeldung liefert. Der Makro bricht einfach irgendwann ohne Meldung ab. Die Codezeile, an der der Interpreter stehen bleibt, gab keinen direkten Hinweis auf die fehlerhafte Funktion. Zum Teil war es das Neuberechnen eines Blattes oder Bereiches mit Calculate, zum Teil aber auch die Auswahl einer bestimmten Zelle mit Select, wobei in der ausgewählten Zelle die fehlerhafte Funktion nicht vorkam. Es brauchte Dutzende von Schritt-für-Schritt-Debugging-Versuchen und einiges an Detektivarbeit, bis ich den rätselhaften Abbrüchen auf die Spur kam. Hätte ich von Anfang an mit Option Explicit gearbeitet, dann wäre mir das nicht passiert!
Frontpage 2000
Ab Version 2000 hat Microsoft Frontpage ein VBA-Modul spendiert. Allerdings sieht es so aus, wie wenn die Frontpage-Entwickler/innen auf halben Weg stecken geblieben wären: Es gibt keine Möglichkeit, Makros aufzuzeichnen. Das Objektmodell hat keinerlei Ähnlichkeit mit Word, was für einen Editor eigentlich naheliegend wäre, sondern scheint eine schnelle Portierung des clientseitigen DOMs zu sein. Die Dokumentation in Frontpage 2000 weist schliesslich kaum Codebeispiele auf und scheint aus zwei verschiedenen Dokumentationen zusammengeschustert zu sein (in Frontpage XP ist die Hilfe etwas besser). Das ist nicht allein meine Meinung, dasselbe kann man in Newsgroups in Dutzenden von Beiträgen nachlesen.
Als ich mich hinter das VBA-Modul von Frontpage setzte, hatte ich ein ganz konkretes, wie ich damals dachte simples Ziel: Ich wollte einen Makro, der um selektierten Text ein SPAN-Tag mit einer CSS-Klasse einfügt, da ich dies in Artikeln wie dem vorliegenden sonst Dutzende von Malen von Hand in der HTML-Ansicht einfügen muss.
Irgendwann stiess ich dann in der Dokumentation auch auf das richtige Objekt, nämlich IHTMLTxtRange. Allerdings lief der Makro einfach nicht so wie er sollte. Statt etwas einzufügen, löschte er die Selektion. Erst ein Code-Beispiel aus einer Newsgroup half mir dann weiter. Und nachdem ich noch gemerkt hatte, dass man mit der Methode pasteHTML nur paarweise HTML-Tags einfügen kann, lief es dann endlich. Hier nun das Resultat von mehreren Stunden Arbeit:
'Fügt um eine Selektion ein SPAN-Tag mit einer CSS-Klasse ein
Sub insertSpan()
Dim objTxtRange As IHTMLTxtRange
'Aus Selection ein TxtRange-Objekt machen
Set objTxtRange = ActiveDocument.selection.createRange()
'Achtung: pasteHTML funktioniert nur mit paarweisen Tags
objTxtRange.pasteHTML ("<span class=""code"">" & _
objTxtRange.htmlText & "</span>" & vbCrLf)
End Sub
Access 2000
Ein Grundprinzip von Access widerspricht jeder strukturierten Programmierung, nämlich die Tatsache, dass Ereignisprozeduren von Formularen immer in einem zum Formular gehörenden Modul abgelegt werden. Bei grösseren Projekten mit vielen Formularen führt dies rasch dazu, dass der Code auf Dutzende von Formularmodulen verteilt ist. Zudem gibt viele Ereignisprozeduren, die sich für verschiedene Steuerelemente wiederholen.
Um eine Duplizierung des Codes zu vermeiden und den Code einer Access-Applikation allgemein übersichtlicher zu machen, ist es deshalb sinnvoll, statt den standardmässig erstellten Ereignisprozeduren eigene öffentliche Funktionen zu erstellen, die in einem öffentlichen Modul abgelegt sind. Ich möchte dies an einem praktischen Beispiel zeigen: In meiner Applikation lösen diverse Felder und Schaltflächen nach unterschiedlichen Ereignissen auf verschiedenen Formularen ein Aktualisieren der Daten in anderen Feldern oder Unterformularen aus.
Falls nicht bereits vorhanden, erzeugen Sie im Visual Basic-Editor ein neues Modul (). In diesem Modul erstellen Sie die folgende Funktion. Wenn Sie den Code direkt anstelle der Ereignisprozedur aufrufen wollen, muss es eine Funktion sein, mit einer Prozedur funktioniert es nicht. In diesem Modul erstellen Sie die folgende Funktion:
Public Function funrequery(ByRef objctr)
objctr.Requery
funrequery = True
End Function
Wichtig ist dabei, dass Sie das zu aktualisierende Objekt als Parameter in die Funktion übergeben, und zwar ByRef, denn das Objekt soll ja verändert werden. Da es sich um eine Funktion handelt, wird in der letzten Zeile noch der Wert true zurückgegeben.
Nun bleibt noch die Frage offen, wie diese Funktion mit den Steuerelementen verbunden wird. Dazu gehen Sie zurück in die Entwurfsansicht eines Formulars, doppelklicken auf ein Steuerelement, das mit der Prozedur verbunden werden soll, suchen im Eigenschaftsfenster im Registerdas gewünschte Ereignis und ersetzen der Prozuraufruf durch folgenden Code:
=funrequery([sfr_codelist])
In eckigen Klammern befindet sich der Name des zu aktualisierenden Elementes. Im aktuellen Fall handelt es sich, wie man aus dem Namen ersieht, um ein Unterformular. Auf dieselbe Art können nun diverse Ereignisprozeduren ersetzt werden, wobei sich nur der Name in den eckigen Klammern ändert.
Und übrigens gibt's nun "Excel 2000 Direkt", das Excel-Buch der Autorin, als Antiquariatsartikel bei Data Becker für schlappe Euro 2,53. Bestellen Sie mit dem Stichwort "excel 2000 direkt" unter Data Becker.
Diese Webseite wurde am 03.05.18 um 22:34 von rothen ecotronics erstellt oder überarbeitet.
Printed on 100% recycled electrons!