"Dim" query
I've recently discovered the Locals window in Excel VBE thanks to a pointer
in this forum, but I have a question about the way variables are displayed there. I have a string variable sTPPath. If I do not dimension it, it appears as Variant/Empty. If I dimension it as a string it appears as String. The variable is then populated with a folder path. OK so far. This variable is then passed to another routine uisng: Call FindTempPrepPath(sTPPath) Once in this routine sTPPath appears as Variant/String. Is this a problem, as I run into problems if I then try to dimension the variable in the sub-routine (duplicate declaration in current scope) as I would expect.. Why does this appear as Variant/String rather than String? It's almost as if the subroutine doesn't recognise the previous Dim statement. Ian |
"Dim" query
In VBA if you do not specify things then they have a default value. For
variables or arguments unless specified otherwise variant is assumed. When you declare sTTPath as string, the variable is a string. Since you do not specify the type of argument you have in your procedure Sub FindTempPrepPath(sTTPath) 'I am assuming it looks like this sTPPath is once again a variant. Note that your function FindTempPrepPath can accept any type of argument. If you want it to accept only strings then change the declaration of the procedure something like this... Public Sub FindTempPrepPath(byval sTPPath as String) -- HTH... Jim Thomlinson "Ian" wrote: I've recently discovered the Locals window in Excel VBE thanks to a pointer in this forum, but I have a question about the way variables are displayed there. I have a string variable sTPPath. If I do not dimension it, it appears as Variant/Empty. If I dimension it as a string it appears as String. The variable is then populated with a folder path. OK so far. This variable is then passed to another routine uisng: Call FindTempPrepPath(sTPPath) Once in this routine sTPPath appears as Variant/String. Is this a problem, as I run into problems if I then try to dimension the variable in the sub-routine (duplicate declaration in current scope) as I would expect.. Why does this appear as Variant/String rather than String? It's almost as if the subroutine doesn't recognise the previous Dim statement. Ian |
"Dim" query
The variable is a variant when you finish the declaration and before you
assigned anything to it. But as soon as you assign a string to it, you'll see: Variant/String If you assign a number to it, you'll see something like: Variant/Integer Variant/Long Variant/Double .... Depending on what your number was. When you declare the subroutine Sub FindTempPrepPath(xxxx) 'xxxx is a variant since you didn't specify it Then xxxx is essentially another variable already in the subroutine. But it doesn't have anything to do with the dimmed variable from before. When you're in the watch window, look at the Context column. This shows the scope of the variable. (What it belongs to.) Ian wrote: I've recently discovered the Locals window in Excel VBE thanks to a pointer in this forum, but I have a question about the way variables are displayed there. I have a string variable sTPPath. If I do not dimension it, it appears as Variant/Empty. If I dimension it as a string it appears as String. The variable is then populated with a folder path. OK so far. This variable is then passed to another routine uisng: Call FindTempPrepPath(sTPPath) Once in this routine sTPPath appears as Variant/String. Is this a problem, as I run into problems if I then try to dimension the variable in the sub-routine (duplicate declaration in current scope) as I would expect.. Why does this appear as Variant/String rather than String? It's almost as if the subroutine doesn't recognise the previous Dim statement. Ian -- Dave Peterson |
"Dim" query
Thanks Jim and Dave.
That all makes perfect sense now. Ian "Jim Thomlinson" wrote in message ... In VBA if you do not specify things then they have a default value. For variables or arguments unless specified otherwise variant is assumed. When you declare sTTPath as string, the variable is a string. Since you do not specify the type of argument you have in your procedure Sub FindTempPrepPath(sTTPath) 'I am assuming it looks like this sTPPath is once again a variant. Note that your function FindTempPrepPath can accept any type of argument. If you want it to accept only strings then change the declaration of the procedure something like this... Public Sub FindTempPrepPath(byval sTPPath as String) -- HTH... Jim Thomlinson "Ian" wrote: I've recently discovered the Locals window in Excel VBE thanks to a pointer in this forum, but I have a question about the way variables are displayed there. I have a string variable sTPPath. If I do not dimension it, it appears as Variant/Empty. If I dimension it as a string it appears as String. The variable is then populated with a folder path. OK so far. This variable is then passed to another routine uisng: Call FindTempPrepPath(sTPPath) Once in this routine sTPPath appears as Variant/String. Is this a problem, as I run into problems if I then try to dimension the variable in the sub-routine (duplicate declaration in current scope) as I would expect.. Why does this appear as Variant/String rather than String? It's almost as if the subroutine doesn't recognise the previous Dim statement. Ian |
All times are GMT +1. The time now is 04:36 PM. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com