Von: excel-weekly-text-request@cgn.smarttools.de im Auftrag von SmartTools Publishing [excel-weekly-text-reply@smarttools.de] Gesendet: Dienstag, 3. Mai 2005 00:10 An: Excel Weekly Abonnenten Betreff: SmartTools Excel Weekly vom 3.5.2005 ----------------------------------------------------------- SmartTools Excel Weekly vom 3.5.2005 Jede Woche neu: Tipps, News und Problemloesungen rund um Microsoft Excel (c) 2005 by SmartTools Publishing ----------------------------------------------------------- +++ IN DIESER AUSGABE +++ EXCEL-NEWS & DOWNLOADS + SPOTLIGHT: Outlook-Daten komfortabel sichern + DOWNLOAD-TIPP: Namensfeld von Excel beliebig konfigurieren + TECHINFO: VBA-Prozeduren auf Visual Basic .NET umstellen EXCEL-TIPP DER WOCHE + Schriftartauswahl fuer Ihre VBA-Dialoge EXCEL-HELPLINE + Indirekter Bezug auf ein anderes Tabellenblatt + Leerzeichen aus einer Zelle loeschen NEWSLETTER-TIPP + Access-Tipps kostenlos per E-Mail Abonnementverwaltung und Copyright +++ EXCEL-NEWS & DOWNLOADS +++ SPOTLIGHT: Outlook-Daten komfortabel sichern -------------------------------------------- Was wuerde passieren, wenn Ihre Outlook-Daten ploetzlich und unerwartet verloren gehen? Wenn Sie regelmaessig mit Outlook arbeiten waere das ein echtes Problem, denn Sie verlieren meistens nicht nur E-Mails, sondern auch wichtige Adressen, Termine aus dem Kalender, Aufgaben und Notizen. Hinzu kommt ein erheblicher Einrichtungsaufwand, um alle Filter und Regeln, Kategorien, Signaturen, Symbolleisten und E-Mail-Konten so einzurichten, dass Sie wieder wie gewohnt arbeiten koennen. Mit dem brandneuen SmartTools Outlook Backup haben Sie diese Probleme zuverlaessig im Griff: + Machen Sie sich nie wieder sorgen um Ihre Daten, denn der Backup-Vorgang laesst sich mit wenig Aufwand automatisieren. + SmartTools Outlook Backup sichert nicht nur einfach die Datendatei, sondern kuemmert sich ausserdem um Ihre Outlook-Symbolleiste, Kategorien, E-Mail- Kontoeinstellungen, Signaturen, Filter und Regeln. + Bei einem Datenverlust sparen Sie viele Stunden Konfigurationsaufwand, denn alle gesicherten Informationen lassen sich mit wenigen Mausklicks wiederherstellen. SmartTools Outlook Backup bietet eine uebersichtliche Benutzeroberflaeche, die auch von weniger erfahrenen Anwendern komfortabel bedient werden kann. Intelligente Assistenten leiten Sie sicher durch das Anlegen und das Wiederherstellen einer Datensicherung. SmartTools Outlook Backup ist ab sofort verfuegbar und kann zurzeit mit 10% Einfuehrungsrabatt bestellt werden. Weitere Infos finden Sie unter: http://www.add-in-world.com/katalog/outlook-backup/ DOWNLOAD-TIPP: Namensfeld von Excel beliebig konfigurieren ---------------------------------------------------------- Sicherlich haben Sie sich auch schon einmal darueber geaergert, dass das Namensfeld in Excel eine feste, nicht individuell einstellbare Breite hat. Waehrend bei der Eingabe laengerer Namen der Feldinhalt noch automatisch nach rechts gescrollt wird, ist es bei der Auswahl eines Namens oftmals nicht moeglich, den gesamten Namen zu lesen, weil Excel die Dropdown-Liste nur in der Breite des Namensfeldes anzeigt und laengere Namen am rechten Rand einfach abgeschnitten werden. Mit unserem Add-In "Namensfeld-"Erweiterung schaffen Sie Abhilfe: Es erweitert die Dropdown-Liste des Namensfeldes auf eine individuell einstellbare Breite. Wenn Sie Excel nach der Installation des Add-Ins starten und dort auf den kleinen schwarzen Pfeil am Namensfeld klicken, werden Sie sehen, dass die Dropdown-Liste nun wesentlich breiter ist und selbst das Lesen extrem langer Namen keine Probleme mehr bereitet: http://www.add-in-world.com/katalog/xl-namensfeld/ TECHINFO: VBA-Prozeduren auf Visual Basic .NET umstellen -------------------------------------------------------- Das Microsoft Visual Studio 2005 laesst noch ein wenig auf sich warten und damit verzoegert sich auch die Auslieferung der Visual Studio Tools for Office 2005, mit deren Hilfe Sie Excel- und Word-Erweiterungen in Visual Studio entwickeln koennen. Wie in der letzten Ausgabe berichtet, kann aber bereits eine Beta-Version angefordert werden, um erste Erfahrungen mit den neuen Moeglichkeiten zu sammeln. Besonders interessant ist in diesem Zusammenhang eine umfangreiche Techinfo, die im Detail auf Unterschiede zwischen VBA und Visual Basic .NET eingeht. Fuer Entwickler, die ihre VBA-Prozeduren umstellen moechten, eine unverzichtbare Hilfe: http://msdn.microsoft.com/office/understanding/excel/technicalarticles/default.aspx?pull=/library/en-us/odc_vsto2005_ta/html/officevstolanguagemigrationfromvba.asp +++ EXCEL-TIPP DER WOCHE +++ Schriftartauswahl fuer Ihre VBA-Dialoge --------------------------------------- Versionen: Excel 2003, 2002/XP, 2000 und 97 Fuer Ihre VBA-Loesungen benoetigen Sie in Userformen regelmaessig eine Schriftartenauswahl, um beispielsweise eine eigene Formatierung fuer Zellen oder eine Suchfunktion fuer speziell formatierte Zellen zu realisieren. Die fuer die Schriftartenauswahl notwendige Schriftartenliste koennen Sie mit den vorhandenen VBA-Funktionen nicht aufbauen, so dass auf den ersten Blick der Einsatz von API-Funktionen notwendig erscheint. Darauf koennen Sie jedoch verzichten: Mit einem kleinen Trick "zapfen" Sie einfach Excel an und nutzen den Inhalt der in der Symbolleiste "Formatierung" sowieso vorhandenen Schriftartenliste. Basis der Loesungen ist die Auflistung "CommandBars" des Application-Objektes. In dieser Auflistung haelt Excel alle zur Verfuegung stehenden Menue- und Symbolleisten sowie Kontextmenues fest. Dabei handelt es sich nicht um Excel- spezifische Objekte, sondern um Objekte einer anwendungsuebergreifenden Objektbibliothek "Microsoft Office x.x Object Library". Fuer den Zugriff auf Menue- und Symbolleisten sowie Kontextmenues muessen Sie also zunaechst in der VBA-Entwicklungsumgebung ueber das Menue EXTRAS- VERWEISE eine Referenz auf "Microsoft Office x.x Object Library" setzen. "x.x" steht dabei fuer "11.0" bei Office/Excel 2003, "10.0" bei Office XP/Excel 2002, "9.0" bei Office/Excel 2000 und "8.0" bei Office/Excel 97. Ueber "CommandBars(Name)" koennen Sie dann auf eine bestimmte Symbolleiste zugreifen und zum Beispiel wie folgt eine Referenz auf die Symbolleiste "Formatierung" initialisieren: Dim CmdBar As Office.CommandBar Set CmdBar = Application.CommandBars("Formatting") Die Objektvariable "CmdBar" verweist anschliessend auf die Symbolleiste "Formatting" (Namen sind immer in Englisch anzugeben) und deren Elemente. Diese Elemente sind in einer Auflistung "Controls" festgehalten, so dass Sie beispielsweise ueber "CmdBar.Controls(5)" auf das fuenfte Symbol einer Symbolleiste zugreifen und dessen Symbol (Icon) aendern koennen: CmdBar.Controls(5).FaceID = 59 Auf aehnliche Art koennen Sie nun auch eine Referenz auf ein bestimmtes Element wie eine Schriftartenliste initialisieren: Dim CmdBar As Office.CommandBar Dim cbo As Office.CommandBarComboBox Set CmdBar = Application.CommandBars("Formatting") Set cbo = CmdBar.Controls(1) Die Objektvariable "cbo" liefert nun einen Verweis auf das erste Element der Symbolleiste "Formatting" und damit auf die Schriftartenliste. Die direkte Adressierung per "Controls(1)" ist jedoch gefaehrlich: Hat der Anwender die Symbolleiste individuell angepasst, kann sich die Schriftartenliste nun an einer ganz anderen Position befinden. Sie koennen sich also nicht darauf verlassen, dass Elemente von Menue- oder Symbolleisten beziehungsweise von Kontextmenues immer an den urspruenglichen Positionen vorhanden sind. Dieses Problem laesst sich jedoch recht einfach loesen: Alle Elemente der eingebauten Menue- und Symbolleisten sowie der Kontextmenues verfuegen ueber eine "ID", eine eindeutige Nummer, ueber die sich jedes Element identifizieren und adressieren laesst. Weiterhin verfuegt ein CommandBar-Objekt ueber eine Funktion "FindControl", der man als Parameter die entsprechende ID mitgibt und die dann eine Referenz auf das gewuenschte Element unabhaengig von dessen Position innerhalb der Symbolleiste liefert: Dim CmdBar As Office.CommandBar Dim cbo As Office.CommandBarComboBox Set CmdBar = Application.CommandBars("Formatting") Set cbo = CmdBar.FindControl(Id:=1728) In diesem Beispiel ist die ID "1728" angegeben, die der Schriftartenauswahl zugeordnet ist. Eine Dokumentation der IDs gibt es von Microsoft nur in Englisch und nur fuer Excel 97 und 2000: http://support.microsoft.com/kb/213552/en-us http://support.microsoft.com/kb/159466/en-us Die IDs sind aber in allen Excel-Versionen durchgehend identisch. Ein Symbolleisten-Element vom Typ "CommandBarComboBox" verfuegt ueber fast die gleichen Eigenschaften, wie ein Listen- oder Kombinationsfeld, das Sie vom Einsatz in Ihren Userformen her kennen. Sie koennen also ueber "ListCount" abfragen, wie viele Eintraege vorhanden sind oder ueber "List(n)" einen bestimmten Eintrag aus der Liste auslesen. Ausgeruestet mit diesen Grundlagen laesst sich nun ein kleines einfaches Beispiel aufbauen, das beim Laden einer Userform eine darin enthaltene Liste mit den Namen verfuegbarer Schriftarten fuellt: 1. Wechseln Sie mit Alt+F11 in die VBA-Entwicklungsumgebung. 2. Legen Sie eine neue Userform an. 3. Geben Sie im allgemeinen Teil des Moduls der Userform die folgenden Deklarationen ein: Option Explicit Dim intFontCount As Integer Dim arrFontNames() As String 4. Platzieren Sie in der Userform ein Listen-Steuerelement und benennen Sie es "lstFonts". 5. Gebe Sie fuer die Ereignisprozedur "Initialize" der Userform die folgenden Anweisungen ein: Private Sub UserForm_Initialize() Dim CmdBar As Office.CommandBar Dim cbo As Office.CommandBarComboBox Dim I& On Error Resume Next Set CmdBar = Application.CommandBars("Formatting") Set cbo = CmdBar.FindControl(Id:=1728) intFontCount = cbo.ListCount ReDim arrFontNames(0 To intFontCount - 1) For I = 1 To intFontCount arrFontNames(I - 1) = cbo.List(I) Next I Me.lstFonts.List = arrFontNames() Me.lstFonts.ListIndex = 0 End Sub Diese Routine nutzt die oben erlaeuterten Moeglichkeiten, um auf das Kombinationsfeld mit den Schriftarten in der Symbolleiste "Formatierung" zuzugreifen und die darin enthaltenen Schriftnamen auszulesen. Die Namen der Schriften werden nicht direkt dem Listenfeld zugewiesen, sondern zunaechst in ein globales Array "arrFontNames()" eingelesen. Die Namen der Schriftarten koennen so gegebenenfalls auch noch in anderen Bereichen genutzt werden. 5. Lassen Sie die Userform ueber F5 testweise anzeigen. Ihnen steht nun ohne Umwege ueber komplizierte API- Funktionen eine mit den Bordmitteln von Excel bzw. Office realisierte Schriftartenauswahl fuer Ihre Userformen zur Verfuegung. Den Namen der gewaehlten Schrift koennen Sie ueber die Ereignisprozedur "Click" beispielsweise wie folgt abfragen und der aktuellen Zelle zuweisen: Private Sub lstFonts_Click() Dim strFontName As String strFontName = Me.lstFonts ActiveCell.Characters.Font.Name = strFontName End Sub ++++++++++++++++ ANZEIGE ++++++++++++++++ Mehr als 2.000 Seiten mit Tipps, Tricks, Makros, Vorlagen und Modellen fuer Excel zum Sonderpreis ------------------------------------------------ Auf der Excel-Berater Archiv-CD-ROM ist die ultimative Informationsquelle fuer alle Excel-Anwender vom Einsteiger bis zum Profi bietet: + Jetzt ueber 2.000 Seiten mit Tipps, Praxisinformationen und Problemloesungen zu Excel im praktischen PDF-Format auf CD-ROM + Bonus: Der Excel-Berater Manager mit ueber 40 Excel- Erweiterungen wird direkt in Excel integriert und steht Ihnen per Mausklick zur Verfuegung + Viele weitere Beispiele, Praxisloesungen, Vorlagen, Kalkulationsmodelle und Makros mit nuetzlichen neuen Funktionen + Alle Themen im Volltext mit Abbildungen samt Beispieldateien + Durchsuchen Sie das Archiv komfortabel im Volltext oder nach einem Index Sie finden auf der CD-ROM Hunderte von Tipps und Praxisloesungen, die Sie fuer Ihre taegliche Arbeit mit Excel nutzen koennen! Das grosse Excel-Berater-Komplettpaket gibt es exklusiv bei SmartTools Publishing zum Aktionspreis mit ueber 30% Rabatt: http://www.add-in-world.com/katalog/exb-komplettpaket/ +++++++++++++++++++++++++++++++++++++++++ +++ EXCEL-HELPLINE +++ Haben Sie Fragen zu Excel 2003, 2002/XP, 2000 oder 97? Dann wenden Sie sich mit einer genauen Problembeschreibung (bitte senden Sie keine Dateien!) an: mailto:excel-helpline@smarttools.de Unser Redaktionsteam waehlt in jeder Ausgabe Fragen aus und beantwortet sie an dieser Stelle im Newsletter. Indirekter Bezug auf ein anderes Tabellenblatt ---------------------------------------------- Versionen: Excel 2003, 2002/XP, 2000 und 97 FRAGE: Ich habe eine Arbeitsmappe mit mehreren Tabellenblaettern angelegt. Die Blaetter heissen "Januar", "Februar" usw. In einer weiteren Tabelle summiere ich Werte aus den Monatsblaettern, zum Beispiel =Januar!B4+Februar!B4 Nun moechte ich moeglichst schnell bestimmen, welche Monatswerte addiert werden. Es waere praktisch, wenn ich dann einfach "Januar" und "Februar" in zwei Zellen eingeben koennte und die oben genannte Formel automatisch die Werte aus B4 der Januar- und der Februar-Tabelle addieren wuerde. Leider funktioniert es aber nicht, die Formel in so etwas wie "=A1!B4+A2!B4" zu aendern (Excel scheint dann eine Dateien mit den Namen "A1" und "A2" zu suchen). Wissen Sie Rat? H.-W. Schulten ANTWORT: Excel wertet eine Bezeichnung mit nachgestelltem "!" immer als Blatt- oder Dateinamen. Das macht Excel ja auch in Ihrer Formel "=Januar!B4+Februar!B4". Wenn Sie moechten, dass Excel den Inhalt einer Zelle - und nicht die Zelladresse selbst - als Bezug interpretiert, muessen Sie mit einer INDIREKT-Funktion arbeiten. Damit erreichen Sie genau das von Ihnen gewuenschte Resultat. Wenn Sie die Namen der Tabellenblaetter, aus denen Sie Werte summieren wollen, beispielsweise in die Zellen A1 und A2 eingegeben haben, koennen Sie mit folgender Formel jeweils die Zahlen aus B4 dieser Tabellenblaetter addieren: =INDIREKT("'"&A1&"'!B4")+INDIREKT("'"&A2&"'!B4") Die INDIREKT-Funktion wandelt einen Textwert in einen Bezug um, weshalb Sie auch die Adressen der Zellen, aus denen Sie Werte addieren wollen, in die Zeichenfolge der INDIREKT- Funktion einschliessen muessen. Die Verweise auf die Inhalte von A1 und A2 verknuepfen Sie mit dem Verkettungsoperator "&". Eine zusaetzliche Besonderheit sind die einfachen Hochkommata, die den Blattbezug umgeben. Sie sind erforderlich, um auch mit Blattnamen, die Leerzeichen enthalten, arbeiten zu koennen. Als Erweiterung des Formelbeispiels koennen Sie natuerlich auch auf die Zellen in den Tabellenblaettern indirekt verweisen, beispielsweise indem Sie die Adresse "B4" als Text in Zelle A3 eingeben. Die Formel muessten Sie dann wie folgt anpassen: =INDIREKT("'"&A1&"'!"&A3)+INDIREKT("'"&A2&"'!"&A3) ++++++++++++++++ ANZEIGE ++++++++++++++++ So haben Sie Ihre Finanzen immer perfekt im Griff ------------------------------------------------- Auf der CD-ROM "Private Finanzkontrolle, Euro Edition" finden Sie eine Fuelle von fertigen Excel-Loesungen rund um Ihre privaten Finanzen. + Haushalts- und Fahrtenbuch, Geldanlagen und Kfz-Kostenkostenkontrolle + Ueberpruefen Sie Ihre regelmaessigen Einnahmen, Ausgaben, Guthaben und Zahlungsverpflichtungen. + Sie sehen sofort, welche Betraege Sie erwarten und welche Zahlungen anfallen. + Die uebersichtlichen Arbeitsmappen sind auch fuer den Einsteiger sofort einsetzbar. + Erfahrene Excel-Anwender profitieren von der einfachen Erweiterungsfaehigkeit der ungeschuetzten Arbeitsmappen. Die brandneue Euro-Edition gibt es jetzt fuer kurze Zeit zum guenstigen Aktionspreis: http://www.add-in-world.com/katalog/finanzkontrolle/ +++++++++++++++++++++++++++++++++++++++++ Leerzeichen aus einer Zelle loeschen ------------------------------------ VERSIONEN: Excel 2003, 2002/XP, 2000 und 97 FRAGE: In einer Spalte befinden sich mehrere Zahlen, die allerdings Leerzeichen enthalten. Wie kann ich sie am einfachsten entfernen? T. Gross ANTWORT: Die einfachste Methode ist folgende: 1. Markieren Sie die Zellen, aus denen die Leerzeichen entfernt werden sollen. 2. Waehlen Sie das Menue BEARBEITEN-ERSETZEN an und geben Sie ein Leerzeichen in das Feld SUCHEN NACH ein. 3. Stellen Sie sicher, dass der Inhalt des Feldes ERSETZEN DURCH leer ist und klicken Sie auf ALLE ERSETZEN. Die Leerzeichen in den markierten Zellen werden daraufhin automatisch entfernt. Sollen die urspruenglichen Zellen mit Leerzeichen erhalten bleiben und Sie moechten die Werte ohne Leerzeichen in einer neuen Spalte darstellen, verwenden Sie einfach die ERSETZEN- Funktion. Zum Beispiel: =ERSETZEN(A1;" ";"") Diese Funktion ersetzt alle Leerzeichen im Zellinhalt aus A1 durch einen Leerstring ""; die Leerzeichen werden also geloescht. +++ NEWSLETTER-TIPP +++ Access-Tipps kostenlos per E-Mail --------------------------------- SmartTools Access Weekly ist ein kostenloser woechentlicher Newsletter mit interessanten Tipps fuer Anwender und Entwickler von Access 2003, 2002/XP, 2000 und 97: + Aktuelle Informationen ueber Bugs und Patches + Helpline fuer Ihre Fragen zu Access + Tipps fuer effektivere Arbeitstechniken + Undokumentierte Parameter und Funktionen + Nuetzliche VBA-Prozeduren + Download-Links zu Access-Erweiterungen Bestellen Sie jetzt Ihr kostenloses Abo: http://www.smarttools.de/newsletter/access-weekly.newsletter.php +++ ABONNEMENTVERWALTUNG +++ Um SmartTools Excel Weekly abzubestellen, senden Sie einfach das Kommando "unsubscribe" an die Adresse mailto:excel-weekly-text-request@smarttools.de Bitte beachten Sie, dass das Kommando im Nachrichtentext stehen muss (nicht im Betreff) und Sie keine Mail im HTML- Format senden duerfen. Weitere Informationen zur Verwaltung der Liste erhalten Sie mit dem Kommando "help" an dieselbe Adresse. ------------------------------------------------------ (c) 2005 by SmartTools Publishing Thomas Tai Luisenstrasse 52, 49565 Bramsche Telefon: 05461/9952-0, Fax: 05461/2609 E-Mail: mailto:excel-weekly@smarttools.de Internet: http://www.smarttools.de/