4 informationsverarbeitung im bauwesen · einführung in excel/vba • einführung in die...

35
1 Informationsverarbeitung im Bauwesen Markus Uhlmann basierend auf Folien von A. Brugger 4

Upload: others

Post on 12-Oct-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

1

Informationsverarbeitung im Bauwesen

Markus Uhlmann

basierend auf Folien von A. Brugger

4

2

Zusammenfassung der 3. Vorlesung

Einführung in Excel/VBA

• Einführung in die Tabellenkalkulation

• Erste Schritte mit VBA

– Integrierte Entwicklungsumgebung– Makros– Programm “Hello World!”

3

1. Informationsdarstellung & -verarbeitung Grundlagen2. Betriebssysteme, Programmiersprachen *3. Einführung in Excel/VBA VBA4. Struktur von (VBA) Programmen *5. Logische Elemente I (Schleifen) * 6. Logische Elemente II (Entscheidungen) *7. Beispielprogramm (Dynamik starrer Körper) *8. Datentypen, Eingabe/Ausgabe *9. Datenfelder *10. Benutzerdefinierte Datentypen *11. Objektorientierte Programmiertechniken I *12. Objektorientierte Programmiertechniken II *13. Matlab I Matlab14. Matlab II *

Inhalt / Planung der Vorlesung

4

Inhalt der heutigen Vorlesung

Struktur von (VBA) Programmen

• Objekte in VBA• Module• Variablen• Prozeduren/Funktionen

5

Einführung in die Programmierung

• VBA unterstützt prozedurales/strukturiertes

Programmieren

• VBA hat zwei wesentliche Eigenschaften einer modernen

Programmiersprache

– ereignisorientiert

– objektorientiert

Ermöglicht Realisierung von komplexen Programmen, interaktive Projekte

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

6

Ereignisorientierte Programmierung

• Beispiel: „Programm wartet auf Mausklick…“

• Keine vorgeschriebene Reihenfolge

• Programm ist eine ungeordnete Sammlung von Prozeduren und Funktionen

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

7

Was ist ein Objekt?

• Objekte sind logische, programmier- und steuerbare Einheiten

• Im Alltag: Objekt ~ Gegenstand

• Beispiel: Objekt „Auto“

Eigenschaften: Tankfüllstand, SchnelligkeitMethoden: Beschleunigen,Tanken

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

8

Objekte in VBA

• Es gibt etwa 150 Objekttypen (Klassen) in Excel, plus weitere Bibliotheken

• Alle Objekte sind hierarchisch gegliedert

• Objekte müssen gezielt angesprochen werden

• Sog. Container-Objekte beinhalten weitere Objekte

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

9

Objekt-Hierarchie

• Hierarchie der wichtigsten Objekte in Excel

• Containerobjekte

• Beispiel ObjektzugriffExcel.Workbooks(1).Worksheets(1).Range("A1")

Excel

Arbeitsmappen

Tabellenblätter

Zellen

Bereiche

Diagramme

Excelfunktionen

Application

Workbooks

Worksheets

Cells

Worksheet-Functions

Chart Objects

Range

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

10

Methoden: Manipulieren von Objekten

• Mit Hilfe von Methoden lassen sich Eigenschaften von Objekten bestimmen oder verändern:

Bsp.:• Methode ClearContents() löscht Formeln oder Daten

aus Zellbereichen, jedoch nicht die Formatierung

• Methode Clear() entfernt alle Objekte (Rahmen, Füllfarbe, Werte,…) aus Zellbereichen

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

11

Beispiel: Containerobjekte, Methoden

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

12

Programmieren mit Modulen

• Modul = Sammlung von Prozeduren

• sinnvoll: Gruppierung ähnlicher Prozeduren

• Erzeugen von Modulen mit

Menü → Einfügen → Modul

• Ändern von Modul-Namen im Eigenschaftenfenster

Menü → Ansicht → Eigenschaftenfenster

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

13

Aufbau eines strukturierten Moduls

• Übersichtlicher Aufbau

Kommentare zum ModulDeklarationsteilProzedurenKommentare zur ProzedurDeklarationsteilAnweisungen, Kontrollstrukturen, …

FunktionenKommentare zur FunktionDeklarationsteilAnweisungen, Kontrollstrukturen, …

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

14

Module im VBA Projekt

• Beispiel:

Deklarationsteil

Deklarationsteil

Anweisungen

Kommentar

Prozedur

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

15

Dokumentation

• Dokumentation macht Programm nachvollziehbar

• Kommentare können überall im Programm stehen

• Kommentarzeichen: Hochkomma „ ‘ “

• Beispiel:'dieser Text dient der Dokumentation

Text bis Zeilenende wird vom Interpreter ignoriert

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

16

(Explizite) Deklaration

• Explizite Vereinbarung von Variablen, Arrays, Typen, Konstanten

• Beispiele:

Dim Ergebnis1 As Double

Dim Ausgabetext2 As String

• Die Namen der Variablen sollen eindeutig und aussagekräftig sein!

Gleitkommazahl mit hoher Genauigkeit

Zeichenkette

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

17

Implizite Deklaration ...

• Ist eine Variable nicht vereinbart, so nimmt diese den Typ des ersten Übergabewerts an!

• Beispiel:Übergibt man der nicht deklarierten Variablen als erstes eine Zeichenkette, so wird die Variable implizit als „String“ vereinbart.

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

18

Implizite Deklaration vermeiden

• Implizite Vereinbarung ist fehleranfällig, deswegen:Anweisung Option Explicit als erste Anweisung im Modul

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

• Variablendeklaration erzwingen: (in VBE) Extras->Optionen->Editor->

Variablendeklaration erforderlich

19

Variablendeklaration: Syntax

• Möglichkeiten:

Dim Name [As Type]Public Name [As Type]Private Name [As Type] Static Name [As Type]

• Beispiel:

Public i as Long

deklariert “i” als Ganzzahl

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

20

Konstantendeklaration

• Syntax:

[Private|Public] Const Name [As Type] = Value

• Beispiel:

Private Const Pi as Double=3.1415927

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

21

Gültigkeitsbereiche von Variablen

• Dim Standarddeklaration

(Modulebene oder Prozedurebene)

• Public Modulebene

Variable im gesamten Projekt bekannt

• Private ModulebeneVariable nur im Modul bekannt

(Standardeinstellung)

• Static Nur in ProzedurVariable behält Wert während der gesamten Laufzeit

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

22

Wichtige Datentypen

• Boolean (Boolescher Wert) (2 Bytes)• True oder False

Integer (Ganzzahl) (2 Bytes)• -32.768 bis 32.767

Long (lange Ganzzahl) (4 Bytes)• -2.147.483.648 bis 2.147.483.647

.Single (Gleitkommazahl mit einfacher Genauigkeit) (4 Bytes)• -3,402823E38 bis -1,401298E-45 für negative Werte• 1,401298E-45 bis 3,402823E38 für positive Werte

Double (Gleitkommazahl mit doppelter Genauigkeit) (8 Bytes)• 1,79769313486231E308 bis -4,94065645841247E-324 für negative Werte • 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte

Date (8 Bytes)• 1. Januar 100 bis 31. Dezember 9999

String (Länge der Zeichenkette*Byte)• Zeichenfolgenlänge 1 bis ca. 65.400

Variant (16 Bytes)• Standardtyp für nicht-deklarierte Variablen

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

SpeicherbedarfWertebereich

23

Prozeduren und Funktionen

• Mittel zur Strukturierung

• Einsatz z.B. bei wiederholt auftretenden Aufgaben

• Unterschied in der Art der Werteübergabe:

Prozedur – Übergabe/Rückgabe NUR durch Parameter

Funktion – Rückgabe durch Funktionsnamen

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

24

Prozeduren

• Syntax:

Sub Name(Parameterliste)…

End Sub

Parameterliste: [variable1,variable2,...]

Variablen in Parameterliste können Eingangs- und/ oder Rückgabewerte der Prozedur sein

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

25

Beispiel „Werteübergabe“

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

26

Beispiel “Werteübergabe”

• Erläuterungen zum Beispiel „Werteübergabe“

– Aufruf der Subroutine mittels Call ist optional, dient aber der Übersichtlichkeit.

– In der aufgerufenen Subroutine können andere Namen in der Parameterliste stehen, entscheidend ist die Reihenfolge.

wert1 wird a, wert2 wird b und damit Typ Single.

– Mehrfachdeklaration nicht möglich, d.h. a und b können inSub rout2(a,b) nicht nochmals deklariert werden.

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

27

Modus der Werteübergabe

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

• VBA unterstützt zwei Modi der Werteübergabe:

• “call by reference”: (wie in FORTRAN)

Speicheradresse der Parameter wird übergebenÄnderung in Unterprogramm ändert Wert im übergeordneten

Programm

• “call by value”: (wie in C)

Wert der Parameter wird übergebenUnterprogramm legt getrennte Kopie der Variable an Änderung im

Unterprogramm hat keinen Einfluß auf Wert im übergeordneten Programm

• VBA Standardmodus ist “call by reference”

28

Beispiel zu Modus Werteübergabe

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

29

Funktionen / Functions

• Rechenvorgänge, die immer wieder benötigt werden, können als Funktionen programmiert werden.

• Das Ergebnis wird dem Funktionsnamen zugewiesen.

• Übersichtlichkeit, Modularisierung

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

30

Beispiel „Lineare Interpolation“

)( x1xx1x2y1y2+y1=y −⋅

−−m= y2− y1

x2− x1 = y− y1x− x1

x

y

x1,y1

x2,y2

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

31

Beispiel „Lineare Interpolation“

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

32

Beispiel „Lineare Interpolation“

• Bemerkungen:

– Die programmierte Funktion kann direkt unter Excel benutzt werden

– Zeilenumbruch möglich mit „ _“

– Das Ergebnis wird dem Funktionsnamen zugewiesenEs findet keine Übergabe in der Parameterliste statt!!

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

33

Können Parameter von Funktionen geändertwerden?

• In VBA Programmen kommunizieren Funktionen per Rückgabewert und möglicherweise durch Modifikation derParameter

• Aber: bei Nutzung als “benutzerdefinierte Funktion” in Excel ist nur Rückgabe über Funktionswert zulässig!

• Beispiel:

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

34

Beispiel „Winkelfunktionen“

• Die Excel-Funktionen benötigen das Argument, also den Winkel im Bogenmaß:

• Definition der Funktion SinGrad(α°)

α= α°180⋅π

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen

35

Aufgabe 2 „Tabellenfunktionen“

VBA-Eigenschaften

Ereignisorient.Programmierung

Objektorient.Programmierung

Programmierenmit Modulen

DeklarationVariablen/Konst.

Prozeduren

Funktionen