_ win_logo.gif (1023 Byte)


zur Homepage
 Registry - Aufbau und Funktionsweise
Win95 Tips
Win95 Tuning
Internet Explorer 4 Tips
Winword Tips


Seite 2
Seite 3
Email schreiben

Microsoft Exel 7.0 - Tips

_


Symbol einen Meldungstext zuweisen
Makro ausführen ohne Auto_Öffnen
Erste leere Zelle nach einem variablen Bereich bestimmen
Markierten Bereich erweitern mit VBA
Anzahl und Namen geöffneter Arbeitsmappen ermitteln
Word Dokument aus Excel mit Shell öffnen
Dezimalzahlen am Komma ausrichten
Dezimalzahlen als Uhrzeit darstellen
Runden auf das Vielfache einer Zahl
Zeiten addieren, deren Summe größer als 24 Std. ist

_

vorherige Seite | Seite 1 | nächste Seite

Benutzerdefiniertem Symbol einen Meldungstext zuweisen

Nachfolgend sehen Sie ein Beispiel-Makro, in welchem eine Symbolleiste und ein Symbol eingefügt und diesem Symbol ein Makro und ein Text zugewiesen werden.

A1: Eigenes Symbol
A2: =SYMBOLLEISTE.EINFÜGEN("Symbolleiste2")
A3: =SYMBOL.HINZUFÜGEN("Symbolleiste2";;C2:J2)
A4: =RÜCKSPRUNG()

Nachfolgend sehen Sie die achtspaltige Definitition für die Zellen C2:J2, die für das Argument "Symbol_Bezug" der Makro-Funktion SYMBOL.HINZUFÜGEN benötigt werden.

C2: 215
D2: Makro1.XLS!Testmakro
E2: Falsch
F2: Wahr
G2:
H2: Meldungstext
I2: Makro
J2:

Der Makrobefehl SYMBOLLEISTE.EINFÜGEN wird nur benötigt, wenn die Symbolleiste noch nicht vorhanden ist. Der zweite Parameter in der Funktion SYMBOL.HINZUFÜGEN gibt die Position an, an der das Symbol eingefügt wird; ansonsten wird das benutzerdefinierte Symbol an das Ende der Leiste angefügt.

Makro ausführen ohne Auto_Öffnen

Folgende Prozeduren zeigen, wie das Problem mit der Methode "OnSheetActivate" gelöst werden kann.

Damit das gezeigte Makro direkt lauffähig ist sollte die Datei ONSHEET.XLS heißen und ein Blatt mit dem Namen "OffeneDateien" enthalten. Das Blatt ist nötig, um die Namen der offenen Dateien zwischenzuspeichern.

'Mit diesem Makro kann erreicht werden, daß nur beim ersten Öffnen einer Datei 'ein bestimmtes Makro ausgeführt wird.

'Es muß in der betreffenden Datei kein Schlüsselwort AUTO_ÖFFNEN mit dem

'entsprechenden Makro zugeordnet werden.

'Allerdings wird das Makro nach dem Schließen und Wiederöffnen einer Datei nicht 'erneut ausgeführt. Hierzu muß die Arbeitsmappe ONSHEET.XLS erneut geladen werden

Public Book As Object

Sub Auto_Open()
Set Book = Workbooks("ONSHEET.XLS").Sheets("OffeneDateien")
Book.Range("A:A").ClearContents
Application.OnSheetActivate = "Probe"
End Sub

Sub Probe()
'bei Makrodatei nicht ausführen
If ActiveWorkbook.Name = "ONSHEET.XLS" Then
Exit Sub
End If
'Überprüfen aller Mappen, ob Sie bereits vorhanden sind
For I = 1 To Workbooks.Count '
If Book.Cells(I, 1).Value = ActiveWorkbook.Name Then
Exit Sub
End If
Next
'Das eigentliche Makro
Call Ihre_eigene_Prozedur

'Merken aller offenen Mappen
For I = 1 To Workbooks.Count
Book.Cells(I, 1).Value = Workbooks(I).Name
Next

End Sub

'Hier können Sie Ihr eigenes Makro entwerfen
Sub Ihre_eigene_Prozedur()
MsgBox "Hallo, Sie haben gerade eine neue Datei geöffnet"
End Sub

'Beim schließen der Makrodatei .OnSheetActivate wieder deaktivieren
Sub Auto_Close()
Application.OnSheetActivate = ""
End Sub

Erste leere Zelle nach einem variablen Bereich bestimmen

Am einfachsten geht dies mit Hilfe der END-Methode des RANGE-Objekts. Damit kann - unter Verwendung einer Konstanten - das Ende eines zusammenhängenden Bereichs ermittelt werden.

Sub AnsUntereEnde()
Selection.End(xlDown).Offset(1, 0).Select
End Sub

Sub AnsRechteEnde()
Selection.End(xlToRight).Offset(0, 1).Select
End Sub

Sub AnsLinkeEnde()
Selection.End(xlToLeft).Offset(0, -1).Select
End Sub

Sub AnsObereEnde()
Selection.End(xlUp).Offset(-1, 0).Select
End Sub

Beachten Sie bitte, daß unter Umständen abgefragt werden muß, ob die Verschiebung der Auswahl in einen gültigen Zellbereich fällt, da sonst Laufzeitfehler entstehen können. Natürlich können die einzelnen Anweisungen auch kombiniert werden. Um z.B. die Zelle in der ersten freien Zeile der ersten Spalte unterhalb eines Bereiches zu ermitteln, sind folgende Zeilen notwendig:

Selection.End(xlToLeft).Select
Selection.End(xlDown).Offset(1, 0).Select

Zuerst wird also die erste Spalte des Bereichs ermittelt, dann die erste
freie Zeile unterhalb dieses Bereichs.

Markierten Bereich erweitern mit VBA

Problem: Sie beziehen sich in einem VISUAL BASIC Programm auf einen Bereich, welcher vom Benutzer frei wählbar sein soll. In diesem Bereich sollen Operationen durchgeführt werden. Danach soll dieser Bereich um genau eine Zeile erweitert werden. Sie können dies mit der folgenden kleinen VBA-Routine erledigen:

Sub BereichErweitern()
Dim ZeileAnfang As Integer
Dim ZeileEnde As Integer
Dim SpalteAnfang As Integer
Dim SpalteEnde As Integer

'Bereichsgröße bestimmen:
SpalteAnfang = Selection.Column
SpalteEnde = Selection.Columns.Count
ZeileAnfang = Selection.Row
ZeileEnde = Selection.Rows.Count
ZeileAnfang = ZeileAnfang
'Hier könnte eine Prozedur zum Bearbeiten des markierten
'Bereiches stehen

'Bereich erweitern:
ZeileEnde = ZeileEnde + ZeileAnfang
SpalteEnde = SpalteEnde + SpalteAnfang - 1
Range(Cells(ZeileAnfang, SpalteAnfang), Cells(ZeileEnde,
SpalteEnde)).Select
End Sub

Anzahl und Namen geöffneter Arbeitsmappen ermitteln

Problem: Sie möchten die Namen aller derzeit geöffneten Arbeitsmappen mittels VISUAL BASIC für Applikationen (VBA) ermitteln?
Die nachfolgenden zwei Beispiele demonstrieren, wie dieses Problem mit Hilfe von VBA gelöst werden kann. Abhängig davon, ob im Menü unter EXTRAS -OPTIONEN, im Register "Modul allgemein" die Sprache auf Englisch oder Deutsch eingestellt ist, können Sie eines der unten stehenden Beispiele verwenden.

Beispiel Deutsch:

Sub CheckOpenWorkbooks()
Dim i Als Ganz
Dim t Als ZeichenF
t = "Anzahl geöffneter Arbeitsmappen: " & ArbeitsmappeListe.Anzahl &
Zn$(13)
Für i = 1 Bis ArbeitsmappeListe.Anzahl
t = t & Zn$(13) & "Datei " & i & ": " & ArbeitsmappeListe(i).Name
Nächste
MeldungsDlg t
Ende Sub


Beispiel Englisch:

Sub CheckOpenWorkbooks()
Dim i As Integer
Dim t As String
t = "Anzahl geöffneter Arbeitsmappen: " & Workbooks.Count & Chr$(13)
For i = 1 To Workbooks.Count
t = t & Chr$(13) & "Datei " & i & ": " & Workbooks(i).Name
Next
MsgBox t
End Sub

Word Dokument aus Excel mit Shell öffnen

Für das Öffnen der Datei können Sie folgende Funktionen verwenden:

Sub Worddatei_öffnen()
Dim dat As String
Dim p As Object

'Hier den Dokumenten-Pfad eintragen:
dat = "C:\Eigene Dateien\Bilanz.doc"

On Error GoTo s 'Probieren, ob Word schon gestartet ist
AppActivate "Microsoft Word"
GoTo n
s: 'Word starten
Application.ActivateMicrosoftApp (xlMicrosoftWord)

n:
'Dokument über OLE Automation öffnen
Set p = CreateObject("Word.basic")
p.DateiÖffnen dat

End Sub

Diese Prozedur überprüft außerdem, ob WORD bereits gestartet ist. Somit wird, im Gegensatz zur Verwendung des SHELL Befehls, keine 2. Instanz des Programms geöffnet. Mit den Befehlen AppActivate und ActivateMicrosoftApp erspart man sich die Angabe des Programm-Pfades. Das Öffnen der Datei erfolgt dann über OLE Automation.

Alternative:
Über das Menü EINFÜGEN - OBJEKT, Register "Aus Datei erstellen", mit der Option "Als Symbol", können Sie auch ein Symbol anstelle der Schaltfläche in Ihre Tabelle einfügen. Für den Doppelklick - anstelle eines einfachen Klicks ersparen Sie sich jegliche Programmierung.

Dezimalzahlen am Komma ausrichten

Es gibt die Möglichkeit, über ein benutzerdefiniertes Zahlenformat Dezimalzahlen am Komma auszurichten. Gehen Sie dazu wie folgt vor:

1. Markieren Sie die auszurichtenden Zellen.

2. Wählen Sie über das Menü FORMAT - ZELLEN... , das Register ZAHLENFORMAT (in Microsoft EXCEL 4.0 für WINDOWS, FORMAT - ZAHLENFORMAT) aus und geben in dem Feld FORMAT die Zeichenfolge "0,????" ein (Eingabe erfolgt ohne Anführungszeichen). Beachten Sie bitte, daß die Anzahl der Fragezeichen "?" abhängig von der Anzahl der maximalen Nachkommastellen in der Spalte ist.

Dezimalzahlen als Uhrzeit darstellen

Es gibt in EXCEL 7.0 keine fertige Formel, welche Dezimalzahlen in Uhrzeiten umwandeln kann. Sie können sich aber eine entsprechende Formel selbst zusammenstellen. Hier ein Beispiel für eine Formel, die den Wert 8,75 in die Uhrzeit 8:45 umrechnet:

=(GANZZAHL(8,75)&":"&(8,75-GANZZAHL(8,75))*60)*1

Die Formel arbeitet folgendermaßen:
Die Ganzzahl der Dezimalzahl 8,75 entspricht dem Stundenwert 8 und wird mit der Funktion GANZZAHL(8,75) ermittelt. Die Nachkommastellen müssen für die Minuten mit dem Wert 60 multipliziert werden. Um die Nachkommastellen zu ermitteln, wird die Ganzzahl von der Dezimalzahl abgezogen. Durch die Funktion 8,75-GANZZAHL(8,75))*60 hat man somit die Minuten ermittelt. Die Stunden und die Minuten werden anschließend durch das Zeichen "&" und einem Doppelpunkt verbunden. Da das Ergebnis als Text vorliegt, wird es mit der Zahl "1" multipliziert. So entsteht eine serielle Zahl, mit der auch gerechnet werden kann. Zu guter Letzt versieht man die Zelle noch mit einem Uhrzeit Zahlenformat aus dem Register "Zahlen", welches man über das Menü FORMAT - ZELLEN auswählen kann.

Runden auf das Vielfache einer Zahl

EXCEL stellt ab der Version 5.0 eine Funktion zur Verfügung, um Zahlen auf das Vielfache einer Zahl zu runden. Es handelt sich um die Funktion VRUNDEN. Diese Funktion gehört nicht zum Standardumfang von EXCEL, sondern ist in dem Add-In "Analyse-Funktionen" definiert. Sie sollten also zuerst über den Add-In-Manager (im Menü EXTRAS) die "Analyse-Funktionen" einbinden.

Hier einige Beispiele zur Anwendung der Funktion VRUNDEN:

FUNKTION: ERGEBNIS: BESCHREIBUNG:

=VRUNDEN(128,341;0,05) 128,35 rundet auf 0,05
=VRUNDEN(128,341;0,01) 128,34 rundet auf 2 Nachkommastellen
=VRUNDEN(128,341;0,5) 128,5 rundet auf 0,5
=VRUNDEN(128,341;0,1) 128,3 rundet auf 1 Nachkommastelle
=VRUNDEN(128,341;1) 128 rundet auf die ganze Zahl
=VRUNDEN(128,341;10) 130 rundet auf volle Zehner

Bemerkung:

Sind im Betriebssystem "schweizerdeutsche" Einstellungen definiert, so sind
in den oben genannten Beispielen jeweils das Komma durch einen Punkt und das
Semikolon durch ein Komma zu ersetzen.

Zeiten addieren, deren Summe größer als 24 Std. ist

Die Summen überschreiten z.T die 24-Stunden-Grenze. Angezeigt wird aber nur eine Zeit, die kleiner 24 Stunden ist. Das Problem dabei ist das Zahlenformat. Wird das Standardzeitformat ("h:mm:ss") vergeben, so wird das Ergebnis wie oben beschrieben formatiert. Verwenden Sie dagegen das Format "[h]:mm:ss" - versehen also die Stunden mit eckigen Klammern - so zeigt die Summe der Stunden auch über 24 Stunden hinausgehende Werte an.


vorherige Seite | Seitenanfang | nächste Seite