VBA shorthand for x=x+1?
Asked Answered
P

2

62
Sub btn1_Click()
Static value As Integer
value = value + 1
MsgBox value
End Sub

I swear when I was taking a VB.net course in college there was a shorter way to tell a variable to add '' to itself. Maybe x=+1. I am using Access now though instead of visual studio. When I try that within the VBE it removes the +. I even removed Option Explicit with no change

Assuming the answer will be no, there is no way to short-hand it & its just a peculiarly of VBA

Pietje answered 19/11, 2013 at 15:34 Comment(0)
S
91

Sadly there are no operation-assignment operators in VBA.

(Addition-assignment += are available in VB.Net)

Pointless workaround;

Sub Inc(ByRef i As Integer)
   i = i + 1  
End Sub
...
Static value As Integer
inc value
inc value
Selflove answered 19/11, 2013 at 15:48 Comment(2)
+1 coming from a cpp background I remember asking myself this question the first day I picked up VBA and doing the exact same pointless workaround hahaBicapsular
One should note that inc should be a Sub as in this case the Function's return value is discarded and not needed. Declaring it as a Sub instead makes this intention clear and doesn't leave it looking like a bug.Lima
P
15

If you want to call the incremented number directly in a function, this solution works bettter:

Function inc(ByRef data As Integer)
    data = data + 1
    inc = data
End Function

for example:

Wb.Worksheets(mySheet).Cells(myRow, inc(myCol))

If the function inc() returns no value, the above line will generate an error.

Psittacine answered 13/10, 2017 at 11:15 Comment(1)
Your implementation is a prefix increment ++myCol. It returns the incremented value. If you want postfix (myCol++) then the function should be looking like this: Function inc(ByRef data As Integer) inc = data data = data + 1 End FunctionBidget

© 2022 - 2024 — McMap. All rights reserved.