Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to declare multiple variables with specifying type using As in VBA?

According to this documentation by Microsoft, the following code can be used to make sure;

a, b, and c are all Single; x and y are both Double

Dim a, b, c As Single, x, y As Double, i As Integer  
> a, b, and c are all Single; x and y are both Double  

The logic behind this is as follows

You can specify different data types for different variables by using a separate As clause for each variable you declare. Each variable takes the data type specified in the first As clause encountered after its variable name part.

However, when I checked with the debugger or MsgBox VarType(a) output, this is not the case.

enter image description here

As you can see, it appears that As is only working for the variables right before itself, ie., c, y and i. All others are Variant/Empty and VarType returns 0.

Is this just the documentation being wrong, or am I missing something obvious?

Microsoft Visual Basic for Application 7.1.1056 Excel 2016 (Windows 10)

like image 752
Kouichi C. Nakamura Avatar asked Mar 08 '19 09:03

Kouichi C. Nakamura


People also ask

How do I declare multiple variables in VBA?

Declaring multiple variables You can declare several variables in one declaration statement, specifying the variable name for each one, and following each array name with parentheses.

Which VBA statement is used to declare variables and their data type?

When declaring variables, you usually use a Dim statement. A declaration statement can be placed within a procedure to create a procedure-level variable.

How do you set a variable type in VBA?

To declare a variable, type Dim, the variable name, and the variable type… somewhat like this… If you don't specify the type of variable, as shown in the first example at the top of this post, VBA declares the variable as a Variant type. A Variant can accept any type of variable.

Can you declared multiple types of variables in single declaration in go?

In Go, it is possible to declare multiple variables in the same line.


1 Answers

The documentation you've linked to isn't wrong, but it's written for VB.NET and not VBA.

In VBA, as you've observed, any variable declarations that aren't immediately followed by As <type> will be Variant.

Therefore you'd need to write:

Dim a As Single, b As Single, c As Single, x As Double, y As Double, i As Integer
like image 78
jsheeran Avatar answered Oct 10 '22 05:10

jsheeran