[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

microsoft.public.excel.programming

Re: Type change in a declared Variable?

NickHK

12/13/2006 1:57:00 AM

At a guess, do you have declaration like :
Dim lCreditSum, MySingleVar as single

If so, this ONLY declares "MySingleVar" as a single ; "lCreditSum" is the
default for undeclared variables - Variant.
You need to explicitly state the datatype of each variable.

Dim lCreditSum As Single, MySingleVar as Single

NickHK

<RjS>; <CISSP>; "CISA" <RjSCISSPCISA@discussions.microsoft.com> wrote in
message news:50E5D3BB-B86C-4336-B644-90FCE60170E7@microsoft.com...
> Hi - I have a VB program I wrote for excell some months ago. It has been
> processing a bank report every day without a hitch for all that time.
Today
> it produced an entirely different and erroneous result. I traced the error
to
> the following statement:
>
> lCreditSum = lCreditSum + wsSRC.Cells(i, 13).Value
>
> Where lCreditSum is previously declared as a type Single. The SRC value is
> formatted as a number with 2 decimal points. When I set a watch on the
> lCreditSum variable and process a previous input report, its type
assignment
> remains as type Single throughout the entire run, but when it processes
> todays input report the type assignment changes to a "Variant/String" on
the
> very first assignment. It then proceeds to append each new value to the
> variable instead of adding the new values to the sum as its supposed to.
>
> Please, anybody... any suggestions? Absolutely nothing has changed with
this
> program for several months and I have examined in input reports in minute
> detail and can detect no changes.
>
> Thanks much,
>


2 Answers

RjS, CISSP, CISA

12/13/2006 2:38:00 PM

0

Thanks much for all the thoughtful replies. The conversion using cSng solves
the problem. In addition, the original Dim line read:

Dim HighPptyRow, lCreditSum, lDebitSum As Single

which, according to NickHK results in only the last value being declared as
Single and the remainder being declared as Variable. I was unaware of this
and it is certainly non-intuitive. So, declaring each variable as Single also
solves the problem.

I am still confused as to why, after months of working fine, the program
suddenly decides that an input value, formatted as Number, is now a Type
"Variant/String"?

Lastly, I am aware that the beginning character of each variable has
implications as to how that variable is or should be treated but I have never
ran across a table of those values. Does anyone know a refrence to this info?

Thanks again for all the great replies. They were all helpful, informative,
and valuable and I learned a lot from them.

"NickHK" wrote:

> At a guess, do you have declaration like :
> Dim lCreditSum, MySingleVar as single
>
> If so, this ONLY declares "MySingleVar" as a single ; "lCreditSum" is the
> default for undeclared variables - Variant.
> You need to explicitly state the datatype of each variable.
>
> Dim lCreditSum As Single, MySingleVar as Single
>
> NickHK
>
> <RjS>; <CISSP>; "CISA" <RjSCISSPCISA@discussions.microsoft.com> wrote in
> message news:50E5D3BB-B86C-4336-B644-90FCE60170E7@microsoft.com...
> > Hi - I have a VB program I wrote for excell some months ago. It has been
> > processing a bank report every day without a hitch for all that time.
> Today
> > it produced an entirely different and erroneous result. I traced the error
> to
> > the following statement:
> >
> > lCreditSum = lCreditSum + wsSRC.Cells(i, 13).Value
> >
> > Where lCreditSum is previously declared as a type Single. The SRC value is
> > formatted as a number with 2 decimal points. When I set a watch on the
> > lCreditSum variable and process a previous input report, its type
> assignment
> > remains as type Single throughout the entire run, but when it processes
> > todays input report the type assignment changes to a "Variant/String" on
> the
> > very first assignment. It then proceeds to append each new value to the
> > variable instead of adding the new values to the sum as its supposed to.
> >
> > Please, anybody... any suggestions? Absolutely nothing has changed with
> this
> > program for several months and I have examined in input reports in minute
> > detail and can detect no changes.
> >
> > Thanks much,
> >
>
>
>

NickHK

12/14/2006 2:02:00 AM

0

What is current value of wsSRC.Cells(i, 13) that is being treated
differently ?

As for variable naming, you are referring "Hungarian Notation".
http://en.wikipedia.org/wiki/Hungaria...

It is a personal/work environment issue. Here's the MS convention :
http://support.microsoft.com...

NickHK

<RjS>; <CISSP>; "CISA" <RjSCISSPCISA@discussions.microsoft.com> wrote in
message news:C7FD953F-5D01-464E-BBD2-C66C59157DDC@microsoft.com...
> Thanks much for all the thoughtful replies. The conversion using cSng
solves
> the problem. In addition, the original Dim line read:
>
> Dim HighPptyRow, lCreditSum, lDebitSum As Single
>
> which, according to NickHK results in only the last value being declared
as
> Single and the remainder being declared as Variable. I was unaware of this
> and it is certainly non-intuitive. So, declaring each variable as Single
also
> solves the problem.
>
> I am still confused as to why, after months of working fine, the program
> suddenly decides that an input value, formatted as Number, is now a Type
> "Variant/String"?
>
> Lastly, I am aware that the beginning character of each variable has
> implications as to how that variable is or should be treated but I have
never
> ran across a table of those values. Does anyone know a refrence to this
info?
>
> Thanks again for all the great replies. They were all helpful,
informative,
> and valuable and I learned a lot from them.
>
> "NickHK" wrote:
>
> > At a guess, do you have declaration like :
> > Dim lCreditSum, MySingleVar as single
> >
> > If so, this ONLY declares "MySingleVar" as a single ; "lCreditSum" is
the
> > default for undeclared variables - Variant.
> > You need to explicitly state the datatype of each variable.
> >
> > Dim lCreditSum As Single, MySingleVar as Single
> >
> > NickHK
> >
> > <RjS>; <CISSP>; "CISA" <RjSCISSPCISA@discussions.microsoft.com> wrote in
> > message news:50E5D3BB-B86C-4336-B644-90FCE60170E7@microsoft.com...
> > > Hi - I have a VB program I wrote for excell some months ago. It has
been
> > > processing a bank report every day without a hitch for all that time.
> > Today
> > > it produced an entirely different and erroneous result. I traced the
error
> > to
> > > the following statement:
> > >
> > > lCreditSum = lCreditSum + wsSRC.Cells(i, 13).Value
> > >
> > > Where lCreditSum is previously declared as a type Single. The SRC
value is
> > > formatted as a number with 2 decimal points. When I set a watch on the
> > > lCreditSum variable and process a previous input report, its type
> > assignment
> > > remains as type Single throughout the entire run, but when it
processes
> > > todays input report the type assignment changes to a "Variant/String"
on
> > the
> > > very first assignment. It then proceeds to append each new value to
the
> > > variable instead of adding the new values to the sum as its supposed
to.
> > >
> > > Please, anybody... any suggestions? Absolutely nothing has changed
with
> > this
> > > program for several months and I have examined in input reports in
minute
> > > detail and can detect no changes.
> > >
> > > Thanks much,
> > >
> >
> >
> >