User Tools

Site Tools


vba:functions:increment

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vba:functions:increment [26.11.2014 11:33:31]
yaslaw
vba:functions:increment [11.01.2016 12:06:32] (current)
yaslaw
Line 1: Line 1:
 <​const>​ <​const>​
-    version=1.0.0 +    version=1.1.0 
-    vdate=26.10.2014+    vdate=11.01.2016
     fname=lib_increment.bas     fname=lib_increment.bas
     ns=%NAMESPACE%     ns=%NAMESPACE%
Line 8: Line 8:
  
 ====== [VBA] Increment/​Decrement (i++ etc) ====== ====== [VBA] Increment/​Decrement (i++ etc) ======
-==Version ​%%version%% - %%vdate%%==+//Simuliert ein %%i++ oder ++i%% für VBA.//
  
 +==Version %%version%% - %%vdate%%==
 {{%%fname%%|Download %%fname%% (V-%%version%%)}} {{%%fname%%|Download %%fname%% (V-%%version%%)}}
  
-In vielen Sprachen kennt man %%PostIncrement und PreIncrement%%. Also ++i und i++. +In vielen Sprachen kennt man %%PostIncrement%% und %%PreIncrement%%. Also ''​%%++%%i'' ​und ''​i%%++%%''​
-Leider kennt VBA das nicht. Somit muss bei einer Manuellen Schleife dies immer cvon hand mittels i = i+1 durchgeführt werden.+Leider kennt VBA das nicht. Somit muss bei einer Manuellen Schleife dies immer von Hand mittels ​''​i = i+1'' ​durchgeführt werden.
 \\ Mit den folgenden Funktionen kann amn das umgehen. \\ Mit den folgenden Funktionen kann amn das umgehen.
 +
  
 ===== Beispiele ===== ===== Beispiele =====
Line 20: Line 22:
  
 Ich nehme 2 mal dieselbe Funktion. Es wird i jeweils um 1 hochgezählt. Das Quadrat davon muss < als 30 sein. Ich nehme 2 mal dieselbe Funktion. Es wird i jeweils um 1 hochgezählt. Das Quadrat davon muss < als 30 sein.
-Somit wissen wir am Anfang noch nicht wieviele Einträge ​das kommen - ergo muss laufend hochgezählt werden und der Ausgabearray vergrössert werden.+Somit wissen wir am Anfang noch nicht wieviele Einträge ​da kommen - ergo muss laufend hochgezählt werden und der Ausgabearray vergrössert werden. 
 + 
 +==== PreIncrement ++i ====
  
 Ohne Incement-Funktion sieht meine Lösung so aus Ohne Incement-Funktion sieht meine Lösung so aus
 <code vb> <code vb>
-Public Sub withoutIncrement()+Public Sub withoutPreIncrement()
     Dim i       As Integer     Dim i       As Integer
     Dim arr()   As Integer     Dim arr()   As Integer
Line 39: Line 43:
 </​code>​ </​code>​
  
-Mit iE() vereinfacht sich das ganze+Mit inc() oder preInc() vereinfacht sich das ganze
 <code vb> <code vb>
-Public Sub withIncrement()+Public Sub withPreIncrement()
     Dim i       As Integer     Dim i       As Integer
     Dim arr()   As Integer     Dim arr()   As Integer
Line 55: Line 59:
 </​code>​ </​code>​
  
-Achja, ​beide haben natürlch ​dieselbe Ausgabe:+==== PostIncrement i++ ==== 
 +Umsetzung ohne meine Funktion 
 +<code vb> 
 +Public Sub withoutPostIncrement() 
 +    Dim i       As Integer 
 +    Dim arr()   As Integer 
 +     
 +    Do While (i) ^ 2 < 30 
 +        ReDim Preserve arr(i) 
 +        arr(i) = i ^ 2 
 +        i = i + 1 
 +    Loop 
 + 
 +    print_r arr 
 +End Sub 
 +</​code>​ 
 + 
 +umsetzung mit postInc() oder inc(#,​itPostIncrement) 
 +<code vb> 
 +Public Sub withPostIncrement() 
 +    Dim i       As Integer 
 +    Dim arr()   As Integer 
 +     
 +    Do While i ^ 2 < 30 
 +        ReDim Preserve arr(i) 
 +        'Die Formel wird zuerst ausgeführt. Dann erst kommt der Teil vor dem = 
 +        'Darum ist postInc() vor dem = 
 +        arr(postInc(i)) = i ^ 2 
 +    Loop 
 + 
 +    print_r arr 
 +End Sub 
 +</​code>​ 
 + 
 +==== Resultat ==== 
 +Achja, ​alle Test haben natürlich ​dieselbe Ausgabe:
 <​code><​Integer()> ​ ( <​code><​Integer()> ​ (
     [0] => <​Integer>​ 0     [0] => <​Integer>​ 0
Line 64: Line 103:
     [5] => <​Integer>​ 25     [5] => <​Integer>​ 25
 )</​code>​ )</​code>​
-==== +===== Code =====
-= Code =====+
 <source '​%%fpath%%/​%%fname%%'​ vb> <source '​%%fpath%%/​%%fname%%'​ vb>
  
vba/functions/increment.1416998011.txt.gz · Last modified: 26.11.2014 11:33:31 by yaslaw