Click here to load reader

Bauinformatik 1 - Teil 1 / VBA - info. · PDF fileVBA-Grundlagen Einleitung Erste VBA Anmerkungen Ein Programm... ist eine Textdatei Beginn mit sub, Ende mit end sub hat einen Namen

  • View
    224

  • Download
    3

Embed Size (px)

Text of Bauinformatik 1 - Teil 1 / VBA - info. · PDF fileVBA-Grundlagen Einleitung Erste VBA...

Bauinformatik 1Teil 1 / VBA

Ernst Baeck

Fachgebiet Statik und Dynamik der Flachentragwerke

10. April 2019

E. Baeck (Uni-DUE) Folien-Skript (V) 1 / 49

VBA-Grundlagen

Die ProgrammierspracheVBA

Visual Basic for Applications

E. Baeck (Uni-DUE) Folien-Skript (V) 2 / 49

VBA-Grundlagen Einleitung

Erste VBA Anmerkungen

Ein Programm...

ist eine Textdatei

Beginn mit sub, Ende mit end sub

hat einen Namen (hier hello)

enthalt Kommentare

enthalt Deklarationen

enthalt Anweisungen

wird sequentiell ausgefuhrt

freies Format

nicht case sensitive

besteht i.A. aus mehreren Teilen

H e l l o WorldSub h e l l o ( )

Dim s As S t r i n gs = He l l o World ! MsgBox s

End Sub

E. Baeck (Uni-DUE) Folien-Skript (V) 3 / 49

VBA-Grundlagen Kommentar

Kommentar

Ein Kommentar...

ist ein beliebiger Text

wird bei Ausfuhrung ignoriert

wird durch ein Zeichen eingeleitet

ist fur Verstandnis unverzichtbar

. . . h i e r geht e s l o sSub h e l l o ( )

V a r i a b l e n d e k l a r a t i o nDim s As S t r i n g Zuweisungs = He l l o World ! S t a r t e MessageboxMsgBox s

End Sub . . . h i e r i s t das Ende

E. Baeck (Uni-DUE) Folien-Skript (V) 4 / 49

VBA-Grundlagen Statement

Statement

Ein Statement...

ist eine Deklaration oder...

eine Anweisung

wird durch Zeilenende geschlossen

oder durch das Zeichen :

wird mit fortgesetzt

enthalt Schlusselworte (dim,...)

und Namen (a,b,...)

Some StatementsSub d e k l a r a t i o n e n ( )

e i n Statementdim a As I n t ege rdim b As I n t ege rdim c As I n t ege r

zwe i Statementsa = 1 : b = 3

e i n Statement i n 2 Z e i l e nc = a

+ b

MsgBox Das war s ! End Sub

E. Baeck (Uni-DUE) Folien-Skript (V) 5 / 49

VBA-Grundlagen Deklaration

Deklaration

Eine Deklaration...

steht i.A. vor den Anweisungen

vereinbart eine neue Variable

oder eine Konstante

vereinbart deren Namen

vereinbart deren Indizierung(Vektor/Matrix)

beginnt mit dem Schlusselwort dim

dim as

e l emen ta r e DatentypenSub d e k l a r a t i o n e n ( )

numer i s che TypenDim b As ByteDim i As I n t ege rDim l As LongDim s As S i ng l eDim d As Double

w e i t e r e TypenDim n As BooleanDim y As S t r i n gDim v As Var i antDim o As Object

KonstanteConst p i = 3 .14

MsgBox Das war s ! End Sub

E. Baeck (Uni-DUE) Folien-Skript (V) 6 / 49

VBA-Grundlagen Namen

Namen

Namen mussen syntaktisch korrekt sein:

keine Schlusselworte

durfen keine Leerzeichen enthalten

durfen keine Operatoren enthalten

erster Buchstabe keine Ziffer

Name Bewertunga oka1b oka b Leerzeichena.b Operatoraou Keine Sonderzeichen

e l emen ta r e DatentypenSub d e k l a r a t i o n e n ( )

numer i s che TypenDim 1b As ByteDim i+ As I n t ege rDim l As LongDim s As S i ng l eDim d As Double

w e i t e r e TypenDim n ( ne i n ) As BooleanDim y ( j a ) As S t r i n gDim v As Var i antDim o As Object

KonstanteConst 314 p i = 3 .14

End Sub

Was ist unzulassig?

E. Baeck (Uni-DUE) Folien-Skript (V) 7 / 49

VBA-Grundlagen Namen

Programm in VBA-IDE

IDE :Integrated Development Environment

Trubo Pascal :eine der ersten IDEs in den 80igern

Syntax Highlighter :

Kommentare grunSchlusselworte blauProgramm-Code schwarzFehlerhafte Zeilen rot

E. Baeck (Uni-DUE) Folien-Skript (V) 8 / 49

VBA-Grundlagen Datentypen

Datentypen

E. Baeck (Uni-DUE) Folien-Skript (V) 9 / 49

VBA-Grundlagen Datentypen

Elementare Datentypen

Datentypen ...

sind abhangig von Hardware

basieren auf 8Bit Bytes

nur 2er Potenzen verfugbar (1,2,4,8)

Typ Suf Bytes Bereich HinweisByte 1 0 255 nur positiv!Integer % 2 32768 32767 sonst 4BytesLong & 4 2147483648 2147483647 ca. 2G = 2 109Boolean 2 TRUE ,FALSE / FFFF ,0000 nur 1 Bit!Single ! 4 float: 7 signifikante Stellen nur fur GraphikDouble # 8 float: 16 signifikante Stellen fur BerechnungString $ 2GB Beschrankung durch Integer fur TexteVariant - beliebiger Inhalt VBAEXCELObject 4 Objektadresse

E. Baeck (Uni-DUE) Folien-Skript (V) 10 / 49

VBA-Grundlagen Operatoren

Operatoren

E. Baeck (Uni-DUE) Folien-Skript (V) 11 / 49

VBA-Grundlagen Operatoren

Arithmetische Operatoren

Nahezu mathematische Notation.

Potenzierung als Operator verfugbar. Besser als C!

Operator Beispiel Anmerkung= x = 6 Zuweisung: x: 6+ x = x+2 Addition zweier Werte. x: 8- x = x-3 Subtraktion zweier Werte. x: 5* x = x*2 Multiplikation zweier Werte. x: 10/ x = x/5 Division zweier Werte. x: 2^ x = 4^2 Potenzierung. x: 16\ x = 5\2 Ganzzahlige Division. x: 2mod x = 3 mod 2 Rest aus ganzzahliger Division. x: 1

E. Baeck (Uni-DUE) Folien-Skript (V) 12 / 49

VBA-Grundlagen Operatoren

Vergleichsoperatoren

Nahezu mathematische Notation.

Wichtig fur Verzweigungen und Abfragen.

Zuweisung (=) und Gleichheit (=) sollten nicht verwechselt werden.

Operator Beispiel Anmerkung< x = 2 < 3 kleiner-Operator (x: true)= 3 Groer-Gleich-Operator (x: false)= x = (2 = 3) Gleichheits-Operator (x: false) x = (2 3) Ungleichheits-Operator (x: true)

E. Baeck (Uni-DUE) Folien-Skript (V) 13 / 49

VBA-Grundlagen Operatoren

Boolsche Operatoren

Folgende Operatoren verknupfen boolsche Ausdrucke.

Operator Beispiel Anmerkungnot x = not(2 < 3) Kleiner-Operator (x: false)and x = (2 < 3)and(4 < 5) UND-Operator (x: true)or x = (2 < 3)or(4 > 5) ODER-Operator (x: true)xor x = (2 < 3)xor(4 < 5) EXL-ODER-Operator (x: false)equ x = (2 > 3)equ(4 > 5) Gleichheitsoperator (x: true)

and true falsetrue true false

false false false

or true falsetrue true true

false true false

xor true falsetrue false true

false true false

E. Baeck (Uni-DUE) Folien-Skript (V) 14 / 49

VBA-Grundlagen Operatoren

Verkettungsoperatoren

Zeichenketten werden mit dem + Operator verkettet.

Unterschiedliche Datentypen werden mit dem & Operator verkettet.

Operator Beispiel Anmerkung+ x = Hallo + Welt Text und Text (x: Hallo Welt).& x = summe = & (1+2) Text und Wert (x: summe = 3).

E. Baeck (Uni-DUE) Folien-Skript (V) 15 / 49

VBA-Grundlagen Funktionen, Unterprogramme

Funktionen

Unterprogramme

E. Baeck (Uni-DUE) Folien-Skript (V) 16 / 49

VBA-Grundlagen Funktionen, Unterprogramme

Funktionen und Unterprogramme

Programm-Code sollte in Unterprogramme strukturiert werden

Maximale Programmlange ca. 30-40 Zeilen

Vermeiden von Spagetti-Code

Unterprogramme und Funktionen sind gekapselte, wieder verwendbareProgrammmodule.

Parameter werden uber die Liste der formalen Parameter vomaufrufenden Programm ubergeben

Funktionen liefern einen Ruckgabewert, der direkt in einem Ausdruckverwendet werden kann.

E. Baeck (Uni-DUE) Folien-Skript (V) 17 / 49

VBA-Grundlagen Funktionen, Unterprogramme

Parameterliste

Formale Parameter sind Parameter in der Funktionsdefinition

Aktuelle Parameter sind Parameter im Funktionsaufruf

Parametersyntax:[] [As ]

Typ:

- byRef: Ubergabe der Adresse (Standard), veranderbar- byVal: Ubergabe des Wertes, nicht veranderbar

Datentyp:Integer, Double, String, etc...

Parameterliste:([Parameter1, [Parameter2, [Parameter3, ...]]])

E. Baeck (Uni-DUE) Folien-Skript (V) 18 / 49

VBA-Grundlagen Funktionen, Unterprogramme

Unterprogramm / Subroutine

Syntax: ([Parameterliste ])

Aufruf:

([Parameterliste ])

Sub s u b c a l l e r ( )Dim a As I n t ege rDim b As I n t ege rDim c As I n t ege ra = 1 : b = 2Ca l l addByVal ( a , b , c )a = 1 : b = 2Ca l l addByRef ( a , b , c )

End Sub

Aufruf 1 ByVal: a,b unverandert

Aufruf 2 ByRef: a = 2, b = 4

Sub addByRef (ByRef a As Intege r , ByRef b As Intege r ,ByRef c As I n t ege r )

a = a + 1 : b = b 2c = a + b

End SubSub addByVal (ByVal a As Intege r , ByVal b As Intege r ,

ByRef c As I n t ege r )a = a + 1 : b = b 2c = a + b

End SubE. Baeck (Uni-DUE) Folien-Skript (V) 19 / 49

VBA-Grundlagen Funktionen, Unterprogramme

Funktion / Function

Syntax: ([Parameterliste ] [As ])

=

Aufruf: = ([Parameterliste ])

Sub f u n c t i o n c a l l e r ( )Dim a As Double , b As Double ,

c As Double , f As Double ,x As Double

a = 1 : b = 0 : c = 4f = pa r a b e l ( a , b , c , 2#)

End SubFunct ion pa r a b e l (ByVal a As Double , ByVal b As Double ,

ByVal c As Double , ByVal x As Double )p a r a b e l = a x 2 + b x + c

End Funct ion

E. Baeck (Uni-DUE) Folien-Skript (V) 20 / 49

VBA-Grundlagen Funktionen, Unterprogramme

Rekursive Funktionen

Rekursive Funktionen rufen sich selbst auf

die Rekursion muss ein Ende finden

ohne Rekursionsende Stack-OverflowFallunterscheidung mit if, else

Fakultat:

n! =

{n (n 1)! fur n > 11 fur n < 2

Sub f a k u l t a e t r e k u r s i v ( )Dim f As Longf = f a k u l t a e t (4 )

End SubFunct ion f a k u l t a e t ( n As I n t ege r ) As Long

I f n > 1 Thenf a k u l

Search related