'Pre-Logic VBA Script Code Dim MeineZeichenfolge, MeinErgebnisfeld MeineZeichenfolge = [Haltung] MeinErgebnisfeld = Split(MeineZeichenfolge, " ")
'Ergebnis =
MeinErgebnisfeld(1)
Berechnungen mit Visual Basic Script werden in MIKE URBAN eingesetzt, um
Eine komplette Referenz bietet zB. das VBScript-Sprachverzeichnis.
Siehe auch FormatNumber!
Gibt eine auf die angegebene Anzahl Dezimalstellen gerundete Zahl zurück. Lässt man die Anzahl der Dezimalstellen weg, wird auf ganze Zahlen gerundet.
Round(Ausdruck[, AnzDezimalstellen]) Round([Laenge], 2)
Laenge | Ergebnis |
---|---|
47,224 | 47,22 |
47,225 | 47,22 |
47,226 | 27,23 |
47,234 | 47,23 |
47,235 | 47,24 |
47,236 | 47,24 |
Es wird nach wissenschaftlichen Prinzipien gerundet. Wenn beide Zahlen gleich weit entfernt sind, wird
Dadurch ist gewährleistet, dass der Mittelwert einer Datenmenge nach dem Runden gleich bleibt, weil im Mittel genauso oft auf- wie abgerundet wird.
Gibt eine bestimmte Anzahl von Zeichen ab dem ersten (linken) Zeichen einer Zeichenfolge zurück.
Left(Zeichenfolge, Länge)
Gibt eine bestimmte Anzahl von Zeichen aus einer Zeichenfolge zurück.
Mid(Zeichenfolge, Start[, Länge])
Mid([Profil],4,Len([Profil])-5)
Profil | Ergebnis |
---|---|
DN 80mm | 80 |
DN 120mm | 120 |
Gibt eine bestimmte Anzahl von Zeichen vom rechten Teil (dem Ende) einer Zeichenfolge zurück.
Right(Zeichenfolge, Länge) Right([EG],3)
EG | Ergebnis |
---|---|
Catch_572 | 572 |
Catchment_573 | 573 |
Zeichenfolgen werden mit dem kaufmännischen & verkettet.
"Ich bin mit " & "diesem Teil verkettet."
Ergebnis:
Ich bin mit diesem Teil verkettet.
Teilt die Zeichenfolge anhand eines bestimmten Trennzeichens und gibt ein eindimensionales Datenfeld zurück, das alle Teilzeichenfolgen enthält.
Split(Ausdruck, Trennzeichen)
Weil das Ergebnis von Split nicht ein Einzelwert, sondern ein Datenfeld ist, muss man zusätzlich mit Index
die Zeichenfolge an der gewünschten Position ansprechen.1)
Split(Ausdruck, Trennzeichen)(Index)
Die Linke Spalte "Haltung" enthält Profiltyp, Höhe und Material, jeweils getrennt durch einen Unterstrich. Mit
Split([Haltung], "_")(1)
erhält man das Ergebnis:
Haltung | Ergebnis |
---|---|
Kreis_300_STZ | 300 |
Ei_750_Beton | 750 |
Mit
Split([Haltung], "_")(2)
erhält man das Ergebnis
Haltung | Ergebnis |
---|---|
Kreis_300_STZ | STZ |
Ei_750_Beton | Beton |
Eine Fehlermeldung im Stil
Error running VBA code : user interrupt.
und dann
Index außerhalb des gültigen Bereichs: '[number: 1]
'
weist darauf hin, dass in einem Datensatz MeinDatenfeld(1) nicht berechnet werden konnte, z.B. wenn im obigen Beispiel die zweite Zeile nur "DN1000" enthalten würde. Umgehen Sie das Problem, indem Sie eine Auswahl mit den Datensätzen erstellen, die korrekt zerlegt werden können.
Gibt eine Zeichenfolge zurück, in der eine bestimmte Teilzeichenfolge durch eine andere Zeichenfolge so oft wie angegeben ersetzt wurde.
Replace(Ausdruck, SuchZF, ErsetzenDurch[, Start[, Anzahl]])
Das folgende Beispiel ersetzt Leerzeichen im Feld MUID durch den Unterstrich. In der praktischen Anwendung braucht diese Berechnung einigermaßen lang, weil von der MUID abhängige Tabellen ebenfalls neu berechnet werden, daher mit Vorsicht und Umsicht anwenden!
Replace([MUID] , " " , "_" )
Die linke Spalte enthält Höhenangaben als Text. Weil das Dezimaltrennzeichen in den Ländereinstellungen auf Komma gesetzt ist, muss der Punkt durch ein Komma erstetzt werden.
Die rechte Spalte hat das Format Double. Die Berechnung besteht aus zwei Teilen. Mid()
holt den Textteil ab der dritten Position, und Replace
ersetzt den Punkt durch ein Komma.
Replace(Mid([HoeheTxt],3) , "." , "," )
HoeheTxt | Ergebnis |
---|---|
H 855.08 | 855,08 |
H 854.43 | 854,43 |
H 1011.37 | 1011,37 |
Gibt einen als Zahl formatierten Ausdruck zurück.
FormatNumber(Ausdruck[,AnzDezimalen [,FolgendeNull [,NegativKlamer [,ZiffGruppe]]]])
Links stehen Durchflussmengen, rechts sieht man das Ergebnis mit zwei fixen Dezimalstellen, wie es beim Labeln des Lageplans angezeigt wird.
FormatNumber([Durchfluss],2,-1)
Durchfluss | Ergebnis |
---|---|
41,9 | 41,90 |
44,41 | 44,41 |
47,225 | 47,23 |
47,235 | 47,24 |
FormatNumber hat wahrscheinlich nur beim Labeln Sinn. Zum Berechnen von Feldern taugt es nicht, weil in den numerischen Feldern ja nur der Wert gespeichert wird, nicht deren Darstellung.
Runden testen
'Pre-Logic VBA Script Code Dim MeineZeichenfolge, MeinErgebnisfeld MeineZeichenfolge = [Haltung] MeinErgebnisfeld = Split(MeineZeichenfolge, " ")
'Ergebnis =
MeinErgebnisfeld(1)