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
Last revision Both sides next revision
vba:functions:increment [26.11.2014 11:33:46]
yaslaw
vba:functions:increment [29.04.2015 11:02:55]
yaslaw
Line 1: Line 1:
 <​const>​ <​const>​
     version=1.0.0     version=1.0.0
-    vdate=26.10.2014+    vdate=25.11.2014
     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
vba/functions/increment.txt · Last modified: 11.01.2016 12:06:32 by yaslaw