slide1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
VBA für Excel PowerPoint Presentation
Download Presentation
VBA für Excel

Loading in 2 Seconds...

play fullscreen
1 / 64

VBA für Excel - PowerPoint PPT Presentation


  • 301 Views
  • Uploaded on

VBA für Excel. 22.02.2010. VBA für Excel. eine Einführung in das Programmieren mit „Visual Basic for Applications“ speziell (aber nicht nur) für Excel unter Windows. Andreas Rozek HyMeSys Software & Consulting Brunnenstraße 30/2 71032 Böblingen Telefon: (07031) 436 5784

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'VBA für Excel' - ostinmannual


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

VBA für Excel

22.02.2010

VBA für Excel

eine Einführung in das Programmieren mit „Visual Basic for Applications“ speziell (aber nicht nur) für Excel unter Windows

Andreas Rozek

HyMeSys Software & Consulting

Brunnenstraße 30/2

71032 Böblingen

Telefon: (07031) 436 5784

Email: A.Rozek@gmx.de

URL: www.Rozek.de

Andreas Rozek

HyMeSys Software & Consulting

slide2

VBA für Excel

22.02.2010

Organisatorisches

• Theorie: von 900 Uhr bis 1200 Uhr

• Praxis: von 1300 Uhr bis 1700 Uhr• Anwesenheitsliste → Teilnahmebestätigung

• begleitende Literatur Christian Friedrich „Einstieg in VBA mit Excel“ Galileo Computing ISBN 3-89842-647-5 ca. 2490 €

Andreas Rozek

HyMeSys Software & Consulting

slide3

VBA für Excel

22.02.2010

Zum Einstieg...

Andreas Rozek

HyMeSys Software & Consulting

slide4

VBA für Excel

22.02.2010

Zum Einstieg...

Andreas Rozek

HyMeSys Software & Consulting

slide5

VBA für Excel

22.02.2010

Überblick über den Kurs

Montag Grundlagen (Syntax & Semantik von VBA)

Dienstag Das Excel-Objektmodell

Mittwoch Ereignis-gesteuerte Programmierung Formular- und ActiveX-Steuerelemente

Donnerstag Eingabeformulare, Programmentwicklung

(Anmeldeformular, Zahlen-Memory)

Freitag weiterführende Themen (Email, Web, usw.)

Verwendung externer Objekte, Sudoku

Andreas Rozek

HyMeSys Software & Consulting

slide6

VBA für Excel

22.02.2010

Lernziele

Idealerweise sollten Sie am Ende dieses (Crash-)Kurses

• wissen, daß man die Funktionalität von Excel mit VBA erheblich erweitern kann;

• einen ungefähren Eindruck von den Möglichkeiten und Grenzen von VBA haben;

• in der Lage sein, eigene VBA-Makros zu schreiben und auszuführen;

• eigene Benutzeroberflächen (UserForms) erstellen und

programmieren können.

Andreas Rozek

HyMeSys Software & Consulting

slide7

VBA für Excel

22.02.2010

Kursmaterialien

• Microsoft Excel: 60-Tage Testversionhttp://trial.trymicrosoftoffice.com/trialgermany/default.aspx

• Excel VBA Language Referencehttp://www.microsoft.com/technet/scriptcenter/topcis/office/vba.mspx

• Windows Script 5.6 Documentationhttp://www.microsoft.com/DOWNLOADS/details.aspx?familyid=01592C48-207D-4BE1-8A76-1C4099D7BBB9&displaylang=en

• OpenOffice.org Version 3.xhttp://de.openoffice.org/product/info.html

Andreas Rozek

HyMeSys Software & Consulting

slide8

VBA für Excel

22.02.2010

VBA für Excel

Teil I: Grundlagen

Andreas Rozek

HyMeSys Software & Consulting

slide9

VBA für Excel

22.02.2010

Ein paar Worte zu Excel

• Tabellen-artige Darstellung von Zahlen und Texten(!)

• Verarbeitung der Tabelleninhalte mithilfe von Formeln

• Visualisierung der Tabelleninhalte mithilfe von Diagrammen

Grenzen

• komplexe Berechnungen, Textverarbeitung

• Zugriff auf Dateien, Datenbanken, das WWW (Data Mining)

• „Steuerung des Benutzers“ durch Benutzeroberflächen

Andreas Rozek

HyMeSys Software & Consulting

slide10

VBA für Excel

22.02.2010

Grenzen sprengen durch Makro-Programmierung

Macros

Macros

Interpreter

Interpreter

DLLs, ActiveX

Application

Application

System

System

• vorhandene Funktionalität durch (meist einfache) „Makros“ erweitern (sofern die Anwendung dies zuläßt)

• durch Integration externer Komponenten (z.B. DLLs oder

ActiveX Controls) zusätzliche Funktionalitäten möglich

• das Gros der Funktionalitäten kommt weiterhin von der ursprgl. „Application“ (Wirtsprogramm)

Andreas Rozek

HyMeSys Software & Consulting

slide11

VBA für Excel

22.02.2010

Was ist „VisualBasic for Applications (VBA)“?

• VisualBasic „Classic“ > VBA > VBScript

• VisualBasic

• für Anwendungen, Steuerelemente, Bibliotheken

• Übersetzung in Maschinensprache (bis Version 6)

• VBScript

• interpretierte Scriptsprache, z.B. für WSH, HTTP-Server, ...

• keine echten Datentypen, ActiveX-Steuerung

• VisualBasic for Applications

• interpretierte „Automatisierungssprache“ in Wirtsprogramm

• Zugriff auf Objektmodell des Wirtsprogrammes

Andreas Rozek

HyMeSys Software & Consulting

slide12

VBA für Excel

22.02.2010

Wo und wie wird VBA (in Excel) eingesetzt?

• exploratives Prototyping (Anforderungen erkennen) • experimentelles Prototyping (Lösungsmöglichkeiten suchen)

• „Einmal“-Programme (Konvertierung von Datenbeständen, Analysen, Studien)

• kleinere (häufig Firmen-interne) Projekte

• kleinere Anwendungen

Treibender Faktor ist stets:

• Zeitersparnis (es ist fast schon alles vorhanden)

Andreas Rozek

HyMeSys Software & Consulting

slide13

VBA für Excel

22.02.2010

Einmal lernen – mehrmals nutzen

• (Visual)Basic-Syntax ist stets gleich

• die Objekt-Modelle ähneln sich, die Konzepte ohnehin

• Ereignis-orientierte Programmierung ist omnipräsent

VBA ist direkt einsetzbar in

• Microsoft's Office-Anwendungen unter Windows

• z.T. Microsoft's Office-Anwendungen unter MacOS X

• manchen Anwendungen von Drittanbietern

• OpenOffice 3.0 (evtl. auch unter MacOS X und Linux)

Andreas Rozek

HyMeSys Software & Consulting

slide14

VBA für Excel

22.02.2010

VBA für Excel

Excel als VBA-Entwicklungsumgebung(im Vergleich zu Java)

Andreas Rozek

HyMeSys Software & Consulting

slide15

VBA für Excel

22.02.2010

Excel als Entwicklungsumgebung

• Entwicklerwerkzeuge einblenden

• Sicherheitseinstellungen anpassen

• Makro-Rekorder (wird hier nicht behandelt)

• Persönliche Makroarbeitsmappe

c:\Dokumente und Einstellungen\benutzer\Anwendungsdaten\

Microsoft\Excel\XLSTART\Personal.xlsb

Andreas Rozek

HyMeSys Software & Consulting

slide16

VBA für Excel

22.02.2010

Java-Übersetzungseinheiten

• Klassen (eine Klasse pro Datei)

• Pakete (packages, als Verzeichnis oder JAR-Archiv)

• z.B. unter Eclipse: Projekte und zusätzliche Dateien

VBA (in Excel, Projekt-Explorer)

• „Projekte“ (Arbeitsmappen, persönliche Makroarbeitsmappe)

• „Excel-Objekte“ (Tabellenblätter u.a.) *.cls

• Formulare (UserForms) *.frm

• Standardmodule *.bas

• Klassenmodule *.cls

Andreas Rozek

HyMeSys Software & Consulting

slide17

VBA für Excel

22.02.2010

Excel als Entwicklungsumgebung

• VBA-Editor

• Eigenschaftenfenster

• Direktbereich

• Editor-Einstellungen

• Kontext-sensitive Hilfe (F1), IntelliSense

• Objektkatalog (F2)

• Modul-Ebene, Prozedur-Ebene, Code-Ebene

Andreas Rozek

HyMeSys Software & Consulting

slide18

VBA für Excel

22.02.2010

Excel als Entwicklungsumgebung (Fortsetzung)

• Ausführen einer Prozedur (F5)

• Haltepunkt setzen/löschen (F9)

• Einzelschritt (F8), Prozedurschritt (Shift-F8)

• Variablenwerte als Tool-Tip

• Lokalfenster: Variablen-Sichtung und -Verwaltung

• Überwachungsfenster: Überwachen von Ausdrücken

• Debug.print expression

Andreas Rozek

HyMeSys Software & Consulting

slide19

VBA für Excel

22.02.2010

VBA für Excel

Syntax und Semantik

Andreas Rozek

HyMeSys Software & Consulting

slide20

VBA für Excel

22.02.2010

Grundlegendes zur Syntax

• eine Anweisung pro Zeile (Zeilenende = Anweisungsende)

• : als Trenner zwischen zwei Anweisungen

• _ als (Zeilen-)Fortsetzungszeichen

• Groß-/Kleinschreibung ist nicht signifikant

• Code-Editor paßt Schreibweise automatisch an

• ' als Kommentarzeichen (für Zeilenkommentare)

• Code-Editor (vgl. Eclipse)

• beherrscht „IntelliSense“, „Syntax Colorization“

• gibt häufig bereits den Rahmen für eine Prozedur vor

Andreas Rozek

HyMeSys Software & Consulting

slide21

VBA für Excel

22.02.2010

Namen („Bezeichner“)

• 1...255 Zeichen

• erstes Zeichen muß ein Buchstabe sein

• danach sind Buchstaben, Ziffern und Unterstriche erlaubt

• Schlüsselworte sind zu meiden

• Groß-/Kleinschreibung wird nicht unterschieden

• ISO 8859-1 ist zulässig (Unicode?)

Andreas Rozek

HyMeSys Software & Consulting

slide22

VBA für Excel

22.02.2010

Datentypen

• Boolean 2 Bytes true oder false

• Byte 1 Byte 0...255

• Integer 2 Bytes -32768...+32767

• Long 4 Bytes -2147483648...+2147483647

• Single 4 Bytes ±3,402823e38...±1,401298e-45

• Double 8 Bytes ±1,79769313486231e308...

±4,94065645841247e-324

• Currency 8 Bytes -922337203685477,5808...

+922337203685477,5807

Andreas Rozek

HyMeSys Software & Consulting

slide23

VBA für Excel

22.02.2010

Datentypen (Fortsetzung)

• Decimal 14 Bytes (groß, Untertyp von Variant)

• Date 8 Bytes 01.01.100...31.12.9999

• Object 4 Bytes Referenz auf ein Objekt

• String 10+n Bytes variable Länge < 2147483648 Zeichen

• String n Bytes feste Länge 1...65535 Zeichen

• Variant 16 Bytes für Zahlen

• Variant 22+n Bytes für Zeichenketten

Andreas Rozek

HyMeSys Software & Consulting

slide24

VBA für Excel

22.02.2010

Datentypen-Suffixe

• Integer %

• Long &

• Single !

• Double #

• Currency @

• String $

Suffixe sind nicht Bestandteil des Variablennamens

Andreas Rozek

HyMeSys Software & Consulting

slide25

VBA für Excel

22.02.2010

Namenskonventionen

• vor allem für Variablen und Konstanten

• machen (Variablen-)Eigenschaften namentlich sichtbar

• allgemeine Form

[prefix]kind[name]

• Präfixe

• s = lokale, statische Variablen

• m = Modul-spezifische Variablen und Konstanten

• g = globale Variablen und Konstanten

Andreas Rozek

HyMeSys Software & Consulting

slide26

VBA für Excel

22.02.2010

Namenskonventionen (Fortsetzung)

• Variablen-Arten für Excel-Blätter

• wks Worksheet (Arbeitsblatt) sht

• cht Chart (Diagramm)

• frm Form (Dialog)

• bas Basic (Standardmodul) mdl

• cls Class (Klassenmodul)

• xl4 Excel4 (Makroblatt)

• im Falle einer Liste wird der Art ein „s“ angehängt

Andreas Rozek

HyMeSys Software & Consulting

slide27

VBA für Excel

22.02.2010

Namenskonventionen (Fortsetzung)

• Variablen-Arten für die verschiedenen Datentypen

• bln Boolean • sng Single

• cur Currency • str String

• dat Date • typ Type (Benutzerdefiniert)

• dbl Double • var Variant

• int Integer

• lng Long

• obj Object

Andreas Rozek

HyMeSys Software & Consulting

slide28

VBA für Excel

22.02.2010

Namenskonventionen (Fortsetzung)

• Variablen-Arten für die verschiedenen Steuerelemente

• lbl Label • mpg MultiPage

• txt Textbox • spn SpinButton

• cbo Combobox • scr Scrollbar

• lst Listbox • img Image

• chk Checkbox • ref RefEdit

• opt OptionButton • trv TreeView

• tgl ToggleButton • lsv ListView

• cmd CommandButton • cal Calendar

• tab TabStrip

Andreas Rozek

HyMeSys Software & Consulting

slide29

VBA für Excel

22.02.2010

Deklaration von Variablen

• implizit (durch Verwendung in einer Zuweisung)varValue = „implizit deklarierte Variable“

strValue$ = „implizit deklarierte String-Variable“

• explizit (irgendwo, aber vor der ersten Verwendung)

dim varValue

dim strValue as string

dim|public|static name[as type] [,name[as type]]

• Verbieten impliziter Deklarationen

option explicit

Andreas Rozek

HyMeSys Software & Consulting

slide30

VBA für Excel

22.02.2010

Deklaration von Datenfeldern (Arrays)

• stets explizit

dim varArray()

dim intArray(4) as Integer

dim strArray(-3 to 3) as String

dim|public|static name (n | n to m[,...])[as type][,...]

• bis zu 60(!) Dimensionen möglich

• Änderung des impliziten Start-Index

option base 1

• Änderung der Feldgröße zur Laufzeit

redim varArray(3)

redim preserve intArray(15)

Andreas Rozek

HyMeSys Software & Consulting

slide31

VBA für Excel

22.02.2010

Gültigkeitsbereich von Variablen und Konstanten

• Deklaration auf Modulebene (public)

• innerhalb des gesamten Modules sichtbar

• Variablenwert bleibt erhalten

• Deklaration auf Prozedurebene (dim)

• nur innerhalb der Prozedur sichtbar

• auf Modulebene deklarierte Variablen dürfen überdeckt werden

• statische Variablen behalten ihren Wert

Andreas Rozek

HyMeSys Software & Consulting

slide32

VBA für Excel

22.02.2010

Literale

• Zahlen 1234 1234e-56

• Zeichenketten „dies ist ein Text“

• Datum und Uhrzeit #21/07/2008 9:15:35#

Konstanten

const conValue = „Zeichenkette“

const conValue = 1234

const conValue = 1234e-56

const conValue = #21/07/2008 9:15:35#

const conValue as String = „Zeichenkette“

const conValue as Integer = 1234

const name[as type] = value

Andreas Rozek

HyMeSys Software & Consulting

slide33

VBA für Excel

22.02.2010

Arithmetische Operatoren

• Potenzierung ^ a ^ b

• Grundrechenarten + - * / a + b

• Ganzzahldivision \ a \ b

• Modulo-Division mod a mod b

• Negation - -a

• Potenzierung negativer Zahlen nur für ganzzahlige Exponenten

• Ganzzahldivision wandelt Argumente in Byte/Integer/Long

• Modulo-Division liefert Divisionsrest

Andreas Rozek

HyMeSys Software & Consulting

slide34

VBA für Excel

22.02.2010

Vergleichsoperatoren

• Vergleich < <= >= >a < b

• Gleichheit = a = b

• Ungleichheit <>a <> b

• Referenzvergleich is a is b

• Ähnlichkeit like a like pattern

• Zeichenkettenvergleich vergleicht ASCII-Codes

• like-Operator erlaubt Platzhalter (? *) im Vergleichsmuster

Andreas Rozek

HyMeSys Software & Consulting

slide35

VBA für Excel

22.02.2010

Logische Operatoren

ab: 00 10 01 11

• Konjunktion and a and b 0 0 0 1

• Äquivalenz eqva eqv b 1 0 0 1

• Implikation imp a imp b 1 0 1 1

• Negation not not a

• Disjunktion or a or b0 1 1 1

• Antivalenz xor a xor b0 1 1 0

Andreas Rozek

HyMeSys Software & Consulting

slide36

VBA für Excel

22.02.2010

Verkettungsoperatoren

• Verkettung & a & b

• Verkettung +a + b

Operator-Hierarchie

• ^

• -

• * /

• \

• mod

• + -

• &

• = <> < > <= >= is like

• not and or xor eqv imp

Andreas Rozek

HyMeSys Software & Consulting

slide37

VBA für Excel

22.02.2010

Fallunterscheidungen

• if ... then ... else

if condition then [...] [else [...]]

if condition then ...

[elseif condition then

...]

[else

...]end if

• verschachtelbar

Andreas Rozek

HyMeSys Software & Consulting

slide38

VBA für Excel

22.02.2010

Fallunterscheidungen (Fortsetzung)

• select case

select case expression

[case expression [,...] ...]

[case ntom [,...]

...]

[case is < | <= | > | >= | = | <>expression

...]

[case else

...]end select

• kein break erforderlich!

Andreas Rozek

HyMeSys Software & Consulting

slide39

VBA für Excel

22.02.2010

Schleifen

• for ... next

for counter = first to last [step delta] ... [exit for]next [counter]

• Zählvariable außerhalb der Schleife deklarieren

• Zählvariable innerhalb der Schleife nicht verändern!

• Vorsicht mit Zählvariablen vom Typ single oder double

Andreas Rozek

HyMeSys Software & Consulting

slide40

VBA für Excel

22.02.2010

Schleifen (Fortsetzung)

• for each

for each element in group ... [exit for]next [element]

• „Gruppen“ können Arrays oder Collections sein

• auch mehrdimensionale Arrays zulässig

(niedrige Indices werden zuerst durchlaufen)

Andreas Rozek

HyMeSys Software & Consulting

slide41

VBA für Excel

22.02.2010

Schleifen (Fortsetzung)

• do

do [while | until condition] ... [exit do]loop

do ... [exit do]loop [while | until condition]

• auch Endlosschleifen möglich

Andreas Rozek

HyMeSys Software & Consulting

slide42

VBA für Excel

22.02.2010

Schleifen (Fortsetzung)

• while

while condition ...wend

• bitte nicht mehr verwenden („deprecated“)

• kein Verlassen der Schleife möglich

Andreas Rozek

HyMeSys Software & Consulting

slide43

VBA für Excel

22.02.2010

Goto und Sprungmarken

• goto

gotoline | label • Sprungmarken

number

label:

• alphanumerische Sprungmarken:

• erstes Zeichen muß ein Buchstabe sein

• danach können Buchstaben oder Ziffern folgen

• für on error goto von Bedeutung

Andreas Rozek

HyMeSys Software & Consulting

slide44

VBA für Excel

22.02.2010

Prozeduren: Subroutinen und Funktionen

• Subroutinen

[private | public][static] sub name [(params)] ... [exit sub]end sub

• Parameterlisten

[optional][byVal | byRef][ParamArray] name[()][as type][=def]

im Normalfall

[byVal | byRef] name[()][as type] static läßt alle inneren Variablen einen Prozedur-Aufruf überdauern

Andreas Rozek

HyMeSys Software & Consulting

slide45

VBA für Excel

22.02.2010

Prozeduren (Fortsetzung)

• Funktionen

[private | public][static] function name [(params)][as type] ... [exit function]

... name= expressionend function

• Sichtbarkeit von Prozeduren

• public von allen Modulen aller Projekte aus aufrufbar

• private nur aus dem eigenen Modul aus aufrufbar (static hat nichts mit der Sichtbarkeit zu tun)

Andreas Rozek

HyMeSys Software & Consulting

slide46

VBA für Excel

22.02.2010

Aufruf von Prozeduren

  • Subroutinen[call] name [(] [argument [, argument]] [)]
  • Funktionen ... = name ([argument [, argument]])

Übergabe von Argumenten

  • byValue für Variablen und Ausdrücke, Übergabe einer Kopie
  • byRef nur für Variablen, Übergabe einer Referenz

Andreas Rozek

HyMeSys Software & Consulting

slide47

VBA für Excel

22.02.2010

Konvertierungsfunktionen

• CBool (expression) → Boolean

• CByte (expression) → Byte

• CCur (expression) → Currency

• CDate (expression) → Date

• CDbl (expression) → Double

• CDec (expression) → Decimal

• CInt (expression) → Integer

• CLng (expression) → Long

• CSng (expression) → Single

• CVar (expression) → Variant

• CStr (expression) → String

Andreas Rozek

HyMeSys Software & Consulting

slide48

VBA für Excel

22.02.2010

Konvertierungsfunktionen (Fortsetzung)

• Val (string-expression) → Zahl

• Str (number-expression) → String

• Hex (number-expression) → Hexadezimal-Darstellung

• Oct (number-expression) → Oktal-Darstellung

• Asc (string-expression) → Zeichencode des ersten Zeichens

• Chr (byte-expression) → Zeichen mit ggb. Zeichencode

Andreas Rozek

HyMeSys Software & Consulting

slide49

VBA für Excel

22.02.2010

Datentypen (o.ä.) überprüfen oder anzeigen

• IsArray (variable) ist Variable ein Feld?

• IsDate (expression) ist Ausdruck vom Typ „Date“?

• IsEmpty (expression) ist Ausdruck initialisiert?

• IsError (expression) enthält Ausdruck ein Fehler-Objekt?

• IsMissing (expression) ist optionales Argument vorhanden?

• IsNull (expression) enthält Ausdruck nur Null-Werte?

• IsNumeric (expression) ist Ausdruck numerisch?

• IsObject (variable) enthält Variable eine Objekt-Referenz?

• TypeName (expression) liefert den Datentyp des Ausdruckes

Andreas Rozek

HyMeSys Software & Consulting

slide50

VBA für Excel

22.02.2010

Klassen

  • Instanzieren ja, Vererbung nein
  • Anlegen und Verwalten über den Code-Editor
  • in eigenem Klassenmodul
  • nur Instanzen-Methoden und -Eigenschaften
  • static bedeutet: alle Prozedur-internen Variablen überdauern einen Aufruf (erspart viele einzelne "static"s)
  • Selbst-Referenz me

Andreas Rozek

HyMeSys Software & Consulting

slide51

VBA für Excel

22.02.2010

Eigenschaftsprozeduren

  • Auslesen einer Eigenschaft[public | private] [static] property get name [(params)] as type ... [exit property] ... [name = expression]end property
  • Zuweisen eines Wertes an eine Eigenschaft[public | private] [static] property let name ([params,] value) ... [exit property]end property
  • Zuweisen einer Referenz an eine Eigenschaft[public | private] [static] property set name ([params,] reference) ... [exit property]end property

Andreas Rozek

HyMeSys Software & Consulting

slide52

VBA für Excel

22.02.2010

Konstruktor und Destruktor

  • Konstruktorprivate sub Class_initialize () end sub
  • Destruktorprivate sub Class_terminate () end sub
  • Selbst-Referenzme

Andreas Rozek

HyMeSys Software & Consulting

slide53

VBA für Excel

22.02.2010

Verwenden von Klassen und Objekten

  • Zuweisung von Referenzendim name as Object set name = reference
  • Instanzieren einer Klasseset name = new class
  • Adressieren von Eigenschaften ... = instance.propertyinstance.property = ...

Andreas Rozek

HyMeSys Software & Consulting

slide54

VBA für Excel

22.02.2010

Verwenden von Klassen und Objekten

  • Null-Referenzset name = nothing if expression is nothing then ...
  • with ... end withwith instance ...end with Vorsicht bei Schachtelungen!

Andreas Rozek

HyMeSys Software & Consulting

slide55

VBA für Excel

22.02.2010

Funktionen für die Ein- und Ausgabe

  • Ausgabe im Direktbereichdebug.print argument
  • Meldungsfenster ... = MsgBox(prompt [, buttons] [, title]) Konstanten für „buttons“ und Rückgabewerte siehe Objektkatalog
  • Eingabefenster ... = InputBox(prompt [,title] [, default]) gibt immer eine Zeichenkette zurück

Andreas Rozek

HyMeSys Software & Consulting

slide56

VBA für Excel

22.02.2010

Mathematische Funktionen

  • abs (expression) Betrag
  • atn (expression) Arcustangens
  • cos (expression) Cosinus
  • exp (expression) Exponentialfunktion
  • fix (expression) ganzzahliger Anteil (Rundung gegen 0)
  • int (expression) ganzzahliger Anteil (Rundung gegen -infty)
  • log (expression) natürlicher Logarithmus
  • rnd ([seed]) Zufallszahl
  • sng (expression) Vorzeichenfunktion -1,0,+1
  • sin (expression) Sinus
  • sqr (expression) Quadratwurzel
  • tan (expression) Tangens

Andreas Rozek

HyMeSys Software & Consulting

slide57

VBA für Excel

22.02.2010

Zeichenketten-Funktionen

  • liegen z.T. in Byte- und Wort-Varianten vor (Unicode)
  • Zeichenkettenlänge Entfernen von Weißzeichen ... = len (str) ... = trim (str)
  • Zeichenkettenausschnitte ... = left(str,len) ... = mid(str,start,len) ... = right(str,len)
  • Zeichenkettenumwandlungen ... = lcase (str) ... = ucase (str)

Andreas Rozek

HyMeSys Software & Consulting

slide58

VBA für Excel

22.02.2010

Datum und Uhrzeit

• aktuelles Datum/aktuelle Uhrzeit

Date() Time() Now()

• Bestandteile eines Datums/einer Uhrzeit

Day(date) Month(date) Year(date)

Hour(time) Minute(time) Second(time)

• konkretes Datum/konkrete Uhrzeit

DateSerial(year, month, day)

TimeSerial(hour, minute, second)

• Wochentage und Monate

Weekday(date [, firstdayofweek])

WeekdayName(date , abbreviated, firstdayofweek)

MonthName(month [, abbreviated])

Andreas Rozek

HyMeSys Software & Consulting

slide59

VBA für Excel

22.02.2010

Übungen

  • spielen sich heute im Code-Editor und im Direktbereich ab
  • öffnen Sie Excel, nehmen Sie die Entwicklungseinstellungen vor und öffnen Sie den Code-Editor
  • im Direktbereich: debug.print „Hello, World!“
  • debug.print sind zuviele Zeichen? schreiben Sie eine Sub- routine namens „say“, die einen Zeichenketten-Parameter erwartet und diesen mittels „debug.print“ ausgibt

Andreas Rozek

HyMeSys Software & Consulting

slide60

VBA für Excel

22.02.2010

Übungen (Fortsetzung)

  • machen Sie den Parameter optional (Default ist „“)
  • entfernen Sie den Default und prüfen Sie stattdessen in Ihrer Prozedur, ob ein Argument übergeben wurde – falls nicht, geben Sie „(null)“ aus
  • ersetzen Sie den einzelnen Parameter durch ein „ParamArray“ und geben Sie alle Elemente dieses Feldes per debug.print aus
  • jetzt geben Sie alle Elemente in einer Zeile aus
  • als nächstes puffern Sie die übergebenen Texte zwischen und implementieren einen Zeilenumbruch nach 80 Zeichen

Andreas Rozek

HyMeSys Software & Consulting

slide61

VBA für Excel

22.02.2010

Übungen (Fortsetzung)

  • legen Sie eine neue Klasse „Console“ an – diese wird gleich die Konsolenausgabe vereinfachen
  • legen Sie eine private Klassen-Variable „Buffer“ an, die die je- weilige Ausgbezeile zwischenspeichert, initialisieren Sie mit „“
  • legen Sie eine statische Methode „print“ an, die wie zuvor „say“ zunächst alle Ausgaben zwischenspeichert und nach max. 80 Zeichen per debug.print ausgibt (nicht aber, wenn die Zeile noch nicht voll ist)
  • legen Sie eine weitere Methode „println“ an, die sich wie „print“ verhält, aber am Ende den Puffer-Inhalt ausschreibt

Andreas Rozek

HyMeSys Software & Consulting

slide62

VBA für Excel

22.02.2010

Übungen (Fortsetzung)

  • programmieren Sie einen elektronischen Würfel
  • versuchen Sie, das Würfelergebnis „quasi-grafisch“ in den Direktbereich auszugeben
  • programmieren Sie einen Lottozahlengenerator
  • können Sie auch dessen Ausgabe „quasi-grafisch“ (wie auf einem Lottoschein) anzeigen?

Andreas Rozek

HyMeSys Software & Consulting

slide63

VBA für Excel

22.02.2010

Übungen (Fortsetzung)

  • ermitteln Sie für ein gegebenes Datum die aktuelle Kalender- woche – tragen Sie diese Funktion als zusätzliche Funktion in Excel ein
  • ermitteln Sie für einen ggb. Monat die Anzahl der Arbeitstage (zunächst noch ohne Feiertage)
  • legen Sie ein Feld von Feiertagen an (für ein ggb. Jahr) und berücksichtigen Sie dieses bei der Ermittelung der Arbeitstage
  • wie spät ist es?
  • wie lange dauert es noch bis zum Ende dieses Kurses?

Andreas Rozek

HyMeSys Software & Consulting

slide64

VBA für Excel

22.02.2010

Übungen (Fortsetzung)

  • geben Sie mittels MsgBox eine Nachricht aus – suchen Sie zuvor die Liste der Konstanten für die „buttons“ heraus
  • welchen Button hat der Benutzer gedrückt? Zeigen Sie ihn an
  • lassen Sie den Benutzer mittels InputBox einen Text eingeben und zeigen Sie diesen an – was passiert, wenn der Benutzer die Eingabe abbricht?

Andreas Rozek

HyMeSys Software & Consulting