PC Review


Reply
 
 
Ian
Guest
Posts: n/a
 
      22nd Apr 2008
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


 
Reply With Quote
 
 
 
 
Jim Thomlinson
Guest
Posts: n/a
 
      22nd Apr 2008
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
>
>
>

 
Reply With Quote
 
Dave Peterson
Guest
Posts: n/a
 
      22nd Apr 2008
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
 
Reply With Quote
 
Ian
Guest
Posts: n/a
 
      23rd Apr 2008
Thanks Jim and Dave.

That all makes perfect sense now.

Ian

"Jim Thomlinson" <James_Thomlinson@owfg-Re-Move-This-.com> wrote in message
newsD32A101-6708-4BF9-B1C0-(E-Mail Removed)...
> 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
>>
>>
>>



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Field Names: "LongName", "ShortName", "Code", "Description","Comments" PeteCresswell Microsoft Access 2 25th Feb 2009 11:41 PM
Query: "Double" Numeric Criteria Doesn't Work, But "Decmal" Does? PeteCresswell Microsoft Access 3 7th May 2008 05:46 PM
<FORM METHOD="post" onSubmit="return fieldcheck()" name="orientation" action="http://ws-kitty.BU.edu/AT/survey/orientation/script/write.asp" language="JavaScript"> Joeyej Microsoft ASP .NET 0 4th Jun 2004 08:55 PM
Wrong Count(*) on an objCommand.ExecuteScalar but it is correct on "SQL Entreprise Manager" or "SQL Query Analyser" Julio Allegue Microsoft VB .NET 2 21st Oct 2003 03:13 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 09:10 PM.