اگر تا به حال ماکروهایی را برنامه ریزی کرده اید، احتمالاً با نحوه تعریف متغیرها با استفاده از کلمه کلیدی Dim آشنا هستید. به عنوان مثال، می توانید یک متغیر عدد صحیح را با نام MyVar به صورت زیر تعریف کنید:
Dim MyVar As Integer
این بسیار ساده است و در کد شما به خوبی کار خواهد کرد. برای ذخیره چند خط در کد خود ممکن است وسوسه شوید چندین متغیر در هر خط تعریف کنید:
Dim x, y, z As Integer
در برخی از نسخه های زبان بیسیک، این سه متغیر را تعریف و مقداردهی اولیه می کند، هر کدام به عنوان یک عدد صحیح. در VBA نیز به نظر می رسد که به درستی اجرا می شود و هیچ خطایی ایجاد نمی شود. با این حال، یک مشکل کوچک وجود دارد - فقط آخرین متغیر (z) در واقع به عنوان یک عدد صحیح تعریف می شود. با استفاده از کد زیر می توانید ببینید که چگونه این کار می کند:
Sub DimTest()
Dim x, y, z As Integer
Dim sTemp As String
sTemp = "x is type " & VarType(x) & vbCrLf
sTemp = sTemp & "y is type " & VarType(y) & vbCrLf
sTemp = sTemp & "z is type " & VarType(z)
MsgBox sTemp
End Sub
هنگامی که ماکرو را اجرا می کنید، کادر پیام نشان می دهد که نوع متغیر x و y 0 هستند، به این معنی که متغیر یک نوع است (نوع داده پیش فرض برای متغیرهای اعلام نشده). فقط آخرین جعبه پیام (برای z) یک متغیر از نوع 2 را نشان می دهد که به معنای یک عدد صحیح است.
راه حل این است که اطمینان حاصل کنید که متغیرهای خود را یک عدد در هر خط اعلام می کنید، یا از دستور کامل برای هر متغیر استفاده می کنید، مانند شکل زیر:
Dim x As Integer, y As Integer, z As Integer