+ All Categories
Home > Documents > Bauinformatik 1 - Teil 1 / VBA -...

Bauinformatik 1 - Teil 1 / VBA -...

Date post: 20-Jun-2019
Category:
Upload: builiem
View: 228 times
Download: 3 times
Share this document with a friend
49
Bauinformatik 1 Teil 1 / VBA Ernst Baeck Fachgebiet Statik und Dynamik der Fl¨ achentragwerke 10. April 2019 E. Baeck (Uni-DUE) Folien-Skript (V) 1 / 49
Transcript
Page 1: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

Bauinformatik 1Teil 1 / VBA

Ernst Baeck

Fachgebiet Statik und Dynamik der Flachentragwerke

10. April 2019

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

Page 2: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen

Die ProgrammierspracheVBA

Visual Basic for Applications

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

Page 3: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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

Page 4: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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

Page 5: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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

Page 6: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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 <Name> as <Datentyp>

’ 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

Page 7: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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

Page 8: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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

Page 9: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Datentypen

Datentypen

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

Page 10: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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 VBA⇔EXCELObject 4 Objektadresse

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

Page 11: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Operatoren

Operatoren

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

Page 12: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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

Page 13: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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)<= x = 2 <= 3 Kleiner-Gleich-Operator (x: true)>= x = 2 >= 3 Großer-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

Page 14: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Operatoren

Bool’sche Operatoren

Folgende Operatoren verknupfen bool’sche 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 false

true true false

false false false

or true false

true true true

false true false

xor true false

true false true

false true false

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

Page 15: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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

Page 16: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Funktionen, Unterprogramme

Funktionen

Unterprogramme

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

Page 17: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

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

Page 18: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Funktionen, Unterprogramme

Parameterliste

Formale Parameter sind Parameter in der Funktionsdefinition

Aktuelle Parameter sind Parameter im Funktionsaufruf

Parametersyntax:[<Typ>] <name> [As <Datentyp>]

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

Page 19: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Funktionen, Unterprogramme

Unterprogramm / Subroutine

Syntax:<sub> <Name> ([Parameterliste ])

<Anweisungen>

<end sub>

Aufruf:<call> <Name>

([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

Page 20: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Funktionen, Unterprogramme

Funktion / Function

Syntax:<function> <Name> ([Parameterliste ] [As <Datentyp>])

<Anweisungen>

<name> = <Ruckgabewert>

<end function>

Aufruf:<Variable> = <Name> ([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

Page 21: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Funktionen, Unterprogramme

Rekursive Funktionen

Rekursive Funktionen rufen sich selbst auf

die Rekursion muss ein Ende finden

ohne Rekursionsende ⇒ Stack-Overflow

Fallunterscheidung 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 t a e t = n ∗ f a k u l t a e t ( n − 1)

E l s ef a k u l t a e t = 1

End I fEnd Funct ion

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

Page 22: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Schleifen

Schleifen

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

Page 23: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Schleifen

Die FOR-Schleife

Indizierte Wiederholungen werde mit for eingeleitet

und mit next abgeschlossen.

Durchlaufe werden uber eine Index-Variable gesteuert.

Festlegung der Indexvariablen durch Startwert, Endwert undoptionaler Schrittweite (std.: 1)

Anweisung in for - next - Klammer werden ausgefuhrt.

Syntax:<for> <var> = <start> <to> <stop> [<step> <Schritt>]

[Anweisungen]

<next>

Beispiel:Summe aller geraden Zahlen in[4, . . . , 16], Ergebnis ⇒ s.

s = 0f o r i =4 to 16 s tep 2

s = s + inext

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

Page 24: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Schleifen

Die DO-Schleife, vor -Variante

Implizite Wiederholungen werde mit do eingeleitet

und mit loop abgeschlossen.

Abbruch-Bedingung wird vor Durchlauf gepruft.

while Bedingung = until not Bedingung

Syntax:<do> [<while> Bedingung | <until> Bedingung]

<Anweisungen>

<loop>

Beispiel:Summe aller geraden Zahlen in[4, . . . , 16], Ergebnis ⇒ s.

s = 0 : i = 4do wh i l e i <= 16

s = s + iDebug . Pr i n t ( ” i= ” & i &

” s= ” & s )i = i +2

l oop

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

Page 25: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Schleifen

Die DO-Schleife, nach-Variante

Implizite Wiederholungen werde mit do eingeleitet

und mit loop abgeschlossen.

Abbruch-Bedingung wird nach Durchlauf gepruft.

while Bedingung = until not Bedingung

Mindestens ein Durchlauf

Syntax:<do>

<Anweisungen>

<loop [<while> Bedingung | <until> Bedingung]>

Beispiel:Summe aller geraden Zahlen in[4, . . . , 16], Ergebnis ⇒ s.

s = 0 : i = 4do

s = s + iDebug . Pr i n t ( ” i= ” & i &

” s= ” & s )i = i +2

l oop wh i l e i <= 16

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

Page 26: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Schleifen

Beispiel: Geometrische Reihe

sn = a0 ·n∑

i=0

qk =a0

(1− qn+1

)1− q

Implementierung mit for Schleife.

Ausgabe im i-ten Schritts aktuelle Summe und Ergebnis.

Sub g e ome t r i s c h e r e i h e ( )a = 5#: q = 3#: s = 0 : n = 3sn = a ∗ (1 − q ˆ ( n + 1) ) / (1 − q )For i = 0 To n

s = s + a ∗ q ˆ iDebug . Pr i n t ( ” i= ” & i &

” s= ” & s &” sn = ” & sn )

NextEnd Sub

>> Ausgabei= 0 s= 5 sn = 200i= 1 s= 20 sn = 200i= 2 s= 65 sn = 200i= 3 s= 200 sn = 200

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

Page 27: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Abfrage und Abbruch

Die Abfrage mit if

Einfache Variante erlaubt nur eine optionale Anweisung

Allgemeine Variante erlaubt einen optionalen Anweisungsblock

Syntax: einfache Variante<if> <Bedingung> then <Anweisung>

Syntax: allgemeine Variante<if> <Bedingung> then

[Anweisungen]

<endif>

if einfach:

s = 0i f s = 0 then s = 1

if allgemein:

s = 0 : t = 1I f s = 0 Then

s = 1t = 2

End I f

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

Page 28: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Abfrage und Abbruch

exit for und exit do

Abbruch einer for Schleife erfolgt mit exit for

Abbruch einer do Schleife erfolgt mit exit do

Es gibt keine Anweisung um einen Durchlauf abzubrechen!

wir mussen uns leider mit goto behelfen

goto erwartet eine Sprungmarke (Name)

Sprungmarke wird mit : abgeschlossen

Abbruch einer for Schleife:

Sub e x i t f o r ( )For i = 1 To 10

I f i > 5 Then Ex i t ForDebug . Pr i n t ( ” i = ” & i )Next

End Sub

Abbruch eines Durchlaufs mit goto:

Sub c o n t i n u e f o r ( )For i = 1 To 10

I f i = 5 Then GoTo nex tCyc l eDebug . Pr i n t ( ” i = ” & i )

n e x tCyc l e :Next

End Sub

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

Page 29: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Verzweigungen

Verzweigungen

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

Page 30: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Verzweigungen

Die if -elseif -else Verzweigung

Fallunterscheidung mit if, elseif und else

alle elseif - Zweige sind optional

der else - Zweig ist optional

Bedingung ⇒ bool’scher Ausdruck

Syntax:<if> <Bedingung 1> then

<Anweisungen 1>

<elseif> <Bedingung 2> <then>

<Anweisungen 2>

<elseif> <Bedingung 3> <then>

<Anweisungen 3>

<else> <Bedingung n> <then>

<Anweisungen n>

<endif>

Beispiel:

Sub i f v e r zw e i g u n g ( )i = 7I f i = 1 Then

Debug . Pr i n t ( ” i = 1” )E l s e I f i = 2 Then

Debug . Pr i n t ( ” i = 2” )E l s e I f i = 5 Then

Debug . Pr i n t ( ” i = 5” )E l s e I f i = 20 Then

Debug . Pr i n t ( ” i = 20” )E l s e

Debug . Pr i n t (” i weder 1 ,2 ,5 ,20 ” )

End I fEnd Sub

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

Page 31: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Verzweigungen

Die select-case-else Verzweigung

Fallunterscheidung select, case und else

alle case - Zweige ab 2 optional

der else - Zweig ist optional

Syntax:<select case> <Variable>

<case <Wert 1>[,<Wert 1.1>]:

<Anweisungen 1>

<case <Wert 2>:

<Anweisungen 2>

<case <Wert 3>:

<Anweisungen 3>

<case else :

<Anweisungen n>

<end select>

Beispiel:

Sub s e l e c t v e r zw e i g u n g ( )i = 2Se l e c t Case i

Case 1 , 9 :Debug . Pr i n t (

” i = 1 oder 9” )Case 2 :Debug . Pr i n t ( ” i = 2” )Case 3 :Debug . Pr i n t ( ” i = 5” )Case 20 :Debug . Pr i n t ( ” i = 20” )Case E l s eDebug . Pr i n t (

” i weder 1 ,2 ,5 ,20 ” )End Se l e c t

End Sub

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

Page 32: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Felder

Felder / Arrays

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

Page 33: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Felder

Indizierte Variablen, Felder

Felder sind Implementierungen von Vektoren oder Matrizen

Felder haben i.A. mehrere Indizes, ai ,j

Der statische Indexbereich wird bei der Deklaration vorgegeben

Der Indexbereich hat einen unteren und einen oberen Grenzwert

Syntax:<dim> <var> (<von> To <bis> [, Index 2]) As <Typ>

Beispiel:

Deklaration 3x2

Initialisierung

Indexbereich 1: 1-3

Indexbereich 2: 1-2

Sub f e l d e r 1 ( )Dim x (1 To 3 , 1 To 2) As DoubleFor i = 1 To 3

For j = 1 To 2x ( i , j ) = i + j

NextNext

End Sub

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

Page 34: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Felder

Umsetzung einer mathematischen Notation in Schleifen

Eine einfache Summe

10∑i=1

i

s = 0

for i=1 to 10

s = s + i

next

Lange eines transformierten Vektors

l = ‖A · v‖

=

n∑i=1

n∑j=1

(ai ,j · vj)

212

l = 0

for i=1 to n

s = 0

for j=1 to n

s = s + a(i,j)*v(j)

next

l = l +s*s

next

l = sqr(l)

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

Page 35: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Felder

Warum dynamische Speicherverwaltung

Benutzerabhangige Probleme erwarten oft variable Dimensionen

Das Beispiel des Tragwerks hat 5 Verschiebungen und 4 Verdrehungen

Die Dimension der statischen Analyse ist demnach 9K · x = fmit Steifigkeit K , Verformung x und Last f

500 500

200

200

z

x

5 kN

3 kN

12

3

4

1

2

3

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

Page 36: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Felder

Dynamische Felder, Allokation

Statische Felder sind nicht an die Problemdimension anzupassen

Dynamische Felder werden in zwei Schritten erzeugt

- Variablendeklaration ohne Indexbereich- Dimensionierung zur Laufzeit mit ReDim

Statische und dynamische Felder haben gleiches Zugriffsverhalten.

Dynamische Felder konnen zur Laufzeit neu dimensioniert werden.

Sub d y n f e l d e r ( )Dim v ek t o r 1 (1 To 2) As Double ’ s t a t i s c h e A l l o k a t i o nDim v ek t o r 2 ( ) As Double ’ dynamisch A l l o k a t i o nReDim v ek t o r 2 (1 To 2) ’ ok !ReDim v ek t o r 1 (1 To 3) ’ F e h l e r ! ReDim NUR dynamisch !ReDim v ek t o r 2 (1 To 3) ’ ok !

End Sub

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

Page 37: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Felder

Schleife uber iterierbare Container

Felder konnen uber ihren Index iteriert werden (for)

Implizite Iteration mit for-each.

Syntax:<for each> <var1> In <var2>

[Anweisungen]

<next>

var2 ist Container, var1 ein Objekt des Containers.

Dim a (1 To 3) As I n t ege ra (1 ) = 11 : a (2 ) = 12 : a (3 ) = 13For Each i In a

Debug . Pr i n t ”a = ” & iNext

Ein Feld wird deklariert,

initialisiert

und mit for-each ausgegeben.

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

Page 38: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Strukturen / Types

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

Page 39: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Strukturen

nach den Datentypen ein weiterer Schritt in die reale Welt

es werden beliebige Datentypen (auch Strukturen) zusammengefasst

muss vor allen Funktionen, Unterprogrammen deklariert werden!

Syntax:<Type> <Name>

<Name 1> As <Datentyp 1>

[<Name 2> As <Datentyp 2>]

...

<end Type>

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

Page 40: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Beispiel: Linie mit 2 Punkten

Punkt:3d Koordinaten (Feld)

Linie:2 Punkte (Feld)

Jeweils:RGB-Farbe und Kommentar

Type Punktx (1 To 3) As Double ’ Koord ina tenf As Long ’ Farbec As S t r i n g ’ Kommentar

End TypeType L i n i e

p (1 To 2) As Punkt ’ 2 Punktef As Long ’ Farbec As S t r i n g ’ Kommentar

End Type

Sub t y p e t e s t ( )Dim l i n As L i n i el i n . p ( 1 ) . x (1 ) = 0#: l i n . p ( 2 ) . x (1 ) = 1#l i n . p ( 1 ) . x (2 ) = 0#: l i n . p ( 2 ) . x (2 ) = 1#l i n . p ( 1 ) . x (3 ) = 0#: l i n . p ( 2 ) . x (3 ) = 0 .5l i n . p ( 1 ) . c = ” Sta r t punk t ”l i n . p ( 2 ) . c = ”Endpunkt”l i n . c = ”Meine L i n i e ”l i n . p ( 1 ) . f = &HFF0000 ’ r o t e r Punktl i n . p ( 2 ) . f = &HFF00& ’ g r u n e r Punktl i n . f = &HFF& ’ b l aue L i n i e

End Sub

RGB-Farben: 1 Byte/Farbe⇒ Bereich: [0 · · · 255]rot: &HFF0000&grun: &H00FF00&blau: &H0000FF&

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

Page 41: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Entity-Relationship-Modell

Das ER-Modell ist De-facto-Standard der Datenmodellierung.

Das ER-Modell wurde 1976 von Peter Chen vorgestellt.

Es besteht aus Entities (Objekten der Realitat),

Relationships (Beziehungen),

Attributes (Eigenschaften) und

Kardinalitaten (Objektanzahl in einer Liste)

Fehlt eine Beziehung, so wird dies als enthalt betrachtet.

Attribut 1

Attribut 2

Attribut 3

Entity 1 Entity 2 Attribut 2

Attribut 1

Attribut 3

Relations-hip

1 *

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

Page 42: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Stabwerk und dessen Objekte

Objekte:

Stabwerk ⇒ 3 Stabe, 4 Knoten und 2 Lasten

Knoten ⇒ Koordinaten, Auflagerbeschreibung

Stab ⇒ Knotenzuweisung, Flache, E-Modul, Tragheitsmoment

Last ⇒ Lastwert, Richtung, Position

U100: A = 13, 5cm2, I = 206cm4, Stahl S235: E = 210000N/mm2

500 500

200

200

z

x

5 kN

3 kN

12

3

4

1

2

3

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

Page 43: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

ER-Diagramm des Stabwerks

Komposition ist Beziehung 1 ⇒ n...

1 Stabwerk enhalt 3 Stabe (Komposition ⇒ Feld)

1 Stabwerk enhalt 4 Knoten (Komposition ⇒ Feld)

1 Stabwerk enhalt 2 Lasten (Komposition ⇒ Feld)

StabwerkStab3 1

Knoten

1

4

Last

1

2

Lager

1

1

Type Stabwerks (1 To 3) as Stabk (1 To 4) As Knotenl (1 To 2) As Las t

End Type

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

Page 44: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Objektanalyse des Stabes

Die Nummer des Stabes ne ist sein Feldindex.

Der Stab hat die Nummern der anschließenden Knoten nk (Feld!).

Das Material des Stabes wird beschrieben durch den E-Modul dE .

Die Stabquerschnitte werden in 2d beschrieben durch die Flache dAund durch das Flachentragheitsmoment dI .

Vorsicht:double fur dimensionierte Großen,integer fur abzahlbare Großen.

Stabnk(1 : 2)

dE

dA

dI

Type Stabnk (1 To 2 ) As I n t ege rdE As DoubledA As Doubled I As Double

End Type

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

Page 45: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Objektanalyse des Knotens

Die Nummer des Knotens nk ist sein Feldindex.

Der Knoten hat Koordinaten x (Feld!).

Ein Knoten enthalt ein Lagerobjekt l .⇒ Kardinalitaten jeweils 1.

Knoten x(1 : 2)

l

1

1

Type Knotennk As I n t ege rx (1 To 2) As Doublel As Lager

End Type

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

Page 46: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Objektanalyse des Lagers

Kennwerte des Lagers: 0=verschieblich, 1=fest.

Lager Verschiebung in x, tx .

Lager Verschiebung in z, tz .

Lager Verdrehung um y, ry .

Lagertx tz

ry

Type Lagertx as I n t ege rt z as I n t ege rr y as I n t ege r

End Type

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

Page 47: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Objektanalyse der Last

Die Last wird aufgebracht auf Stab ne.

Die Last hat einen Wert w .

Die Last hat eine Richtung, Winkel p gegen positive x-Achse.

Lastposition auf Element. s ∈ [0. · · · 1.].

Lastne w

p s

Type Las tne as i n t e g e r ’ Elementnummerw as double ’ Wertp as double ’ Winkels as double ’ Koo rd ina te

End Type

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

Page 48: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Gesamtdiagramm der Struktur Stabwerk

StabwerkStab3 1

Knoten1 4

Last

1

2Lager

1

1

nk(1 : 2)

dE

dA dI x(1 : 2)

tztx ry

ne

w p

s

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

Page 49: Bauinformatik 1 - Teil 1 / VBA - info.statik.uni-due.deinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-2V.pdf · VBA-Grundlagen Einleitung Erste VBA Anmerkungen

VBA-Grundlagen Strukturen

Implementierung einer Stabwerk-Struktur

Bei der Implementierung wird die Null-Initialisierung berucksichtigt.Eigenschaften werden durch Kopieren der Stabe zugewiesen.Lineare Stab-Struktur erlaubt die Verwendung einer For-Schleife.

dim s as s tabwerk’ Koord ina tens . k ( 2 ) . x (1 ) = 500 .s . k ( 3 ) . x (1 ) = 500 .s . k ( 3 ) . x (2 ) = −200.s . k ( 4 ) . x (1 ) = 1000 .s . k ( 4 ) . x (2 ) = −200.’ Lagers . k ( 2 ) . l . t x = 1s . k ( 2 ) . l . t y = 1s . k ( 4 ) . l . t x = 1’ E i g e n s c h a f t e ns . s ( 1 ) . dE = 210000s . s ( 1 ) . dA = 13 .5s . s ( 1 ) . d I = 206s . s (2 ) = s . s (1 )s . s (3 ) = s . s (1 )

’ Verb indungenf o r i =1 to 3

s . s ( i ) . nk (1 ) = is . s ( i ) . nk (2 ) = i +1

next’ La s tens . l ( 1 ) . ne = 1 : s . l ( 1 ) .w = 5s . l ( 1 ) . p = 90 : s . l ( 1 ) . s = 200/500s . l ( 2 ) . ne = 2 : s . l ( 2 ) .w = 3s . l ( 2 ) . p = 0 : s . l ( 2 ) . s = 1

500 500

200

200z

x

5 kN

3 kN

12

34

1

23

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


Recommended