User Tools

Site Tools


vba:functions:increment

This is an old revision of the document!


[VBA] Increment/Decrement (i++ etc)

Version 1.0.0 - 26.10.2014

Download lib_increment.bas (V-1.0.0)

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.
Mit den folgenden Funktionen kann amn das umgehen.

Beispiele

<code vb>

Code

lib_increment.bas
Attribute VB_Name = "lib_increment"
'-------------------------------------------------------------------------------
'File         : lib_increment.bas
'               Copyright mpl by ERB software
'               All rights reserved
'               http://wiki.yaslaw.info/dokuwiki/doku.php/vba/functions/increment
'Environment  : VBA 2007 +
'Version      : 1.1.0
'Name         : lib_increment
'Author       : Stefan Erb (ERS)
'History      : 25.11.2014 - ERS - Creation
'               11.01.2016 - ERS - inc() verkürzt
'-------------------------------------------------------------------------------
Option Explicit
 
Public Enum incType
    itPreIncrement = 0    '++1
    itPostIncrement = 1   'i++
    itPreDecrement = 2    '--i
    itPostDecrement = 3   'i--
End Enum
 
'/**
' * @param  Number
' * @param  incType     Type der Encrementation. Default ist i++
' * @retrun Number
'*/
Public Function inc(ByRef i As Variant, Optional ByVal iIncType As incType = itPreIncrement) As Variant
    Select Case iIncType
        Case itPreIncrement:    i = i + 1:  inc = i     '++i
        Case itPostIncrement:   inc = i:    i = i + 1   'i++
        Case itPreDecrement:    i = i - 1:  inc = i     '--i
        Case itPostDecrement:   inc = i:    i = i - 1   'i--
    End Select
End Function
 
'/**
' * PreIncrement    ++i
' * Zählt i eins hoch und gibt den Wert zurück
' * @param  Number
' * @retrun Number
'*/
Public Function preInc(ByRef i As Variant) As Variant:  preInc = inc(i, itPreIncrement):    End Function
 
'/**
' * PostIncrement   i++
' * Gibt den Wert zurück und zählt dann i eins hoch
' * @param  Number
' * @retrun Number
'*/
Public Function postInc(ByRef i As Variant) As Variant: postInc = inc(i, itPostIncrement):  End Function
 
'/**
' * PreDecrement    --i
' * Zählt i eins hoch und gibt den Wert zurück
' * @param  Number
' * @retrun Number
'*/
Public Function preDec(ByRef i As Variant) As Variant: preDec = inc(i, itPreDecrement):     End Function
 
'/**
' * PostDecrement   i--
' * Gibt den Wert zurück und zählt dann i eins hoch
' * @param  Number
' * @retrun Number
'*/
Public Function postDec(ByRef i As Variant) As Variant: postDec = inc(i, itPostDecrement):  End Function
 
vba/functions/increment.1416995179.txt.gz · Last modified: 26.11.2014 10:46:19 by yaslaw