Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default strange behaviour - no feedback!

Hi,
I`ve done some rather basic programming in excel and in general I find
vba a useful tool. However, from time to time I run into some problems
that are very annoying because the program is unable to report on what
line of code causes problems. Today, I tried to run a macro that enters
a loop like

for counter = 0 to pi_maxnum

but the code never entered the loop and the program just stopped and
I`m right back in manual control over excel. The solution was to
hardcode the loop like

for counter = 0 to 10

and everything ran fine.

The pi_maxnum was defined as public in another module, I also tried
defining it as public in the module with the sub containing the loop,
to no effect.

I`m no vba expert, someone here can probably point out the problem, but
when the system never even to reports on why nothing happens .. it
should be a law against it. In this case I would excpect a message on
something wrong with the definition of pi_maxnum.

Anyway, if someone cares to share some thoughts on this I`d be glad.

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,302
Default strange behaviour - no feedback!

Hi Epost,

My guess would be that the variable is not receiving/retaining a value. If
pi_maxnum is not initialised, and therefore has a value of zero, the loop
would run from 0 to 0 (i.e. not execute) and there would be no error to
report.

Check therefore that the public variable is being correctly initialised and
that you are *not* declaring the variable (again) in a sub. Were this the
case, the value of the variable in the sub would be that used and, if it is
not initialised in the sub, it would have a zero value.


---
Regards,
Norman



wrote in message
oups.com...
Hi,
I`ve done some rather basic programming in excel and in general I find
vba a useful tool. However, from time to time I run into some problems
that are very annoying because the program is unable to report on what
line of code causes problems. Today, I tried to run a macro that enters
a loop like

for counter = 0 to pi_maxnum

but the code never entered the loop and the program just stopped and
I`m right back in manual control over excel. The solution was to
hardcode the loop like

for counter = 0 to 10

and everything ran fine.

The pi_maxnum was defined as public in another module, I also tried
defining it as public in the module with the sub containing the loop,
to no effect.

I`m no vba expert, someone here can probably point out the problem, but
when the system never even to reports on why nothing happens .. it
should be a law against it. In this case I would excpect a message on
something wrong with the definition of pi_maxnum.

Anyway, if someone cares to share some thoughts on this I`d be glad.



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default strange behaviour - no feedback!

In the same module, run this as a test. Make the immediate window is
visible.

Sub aa()
For counter = 0 To pi_maximum
Debug.Print counter
Next
End Sub

see if the loop is executed

the problem you are dealing with is either a logic error or a failure on
your part to understand variable scope. It isn't something VBA/Excel would
consider an error - because people might intentionally design their code so
the loop is never executed under certain conditions. By using an variable as
one of the loop conditions, you are taking responsibility for determining if
the loop will run or not. So if you want a warning, you will have to
include that in the logic of your code.

--
Regards,
Tom Ogilvy

-




wrote in message
oups.com...
Hi,
I`ve done some rather basic programming in excel and in general I find
vba a useful tool. However, from time to time I run into some problems
that are very annoying because the program is unable to report on what
line of code causes problems. Today, I tried to run a macro that enters
a loop like

for counter = 0 to pi_maxnum

but the code never entered the loop and the program just stopped and
I`m right back in manual control over excel. The solution was to
hardcode the loop like

for counter = 0 to 10

and everything ran fine.

The pi_maxnum was defined as public in another module, I also tried
defining it as public in the module with the sub containing the loop,
to no effect.

I`m no vba expert, someone here can probably point out the problem, but
when the system never even to reports on why nothing happens .. it
should be a law against it. In this case I would excpect a message on
something wrong with the definition of pi_maxnum.

Anyway, if someone cares to share some thoughts on this I`d be glad.



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default strange behaviour - no feedback!

Ok, thanks a lot for your help, guess I need to put in some tests in my
code. It was not a problem with the variable pi_maxnum, it was declared
and given a value. In this case the problem was a logical error on my
part, actually the statement was

for counter = 42 to (counter + pi_maxnum)

I know, its nonsene, and I appologize for asking the wrong question. I
was somehow convinced I gave a correct minimal example (believe it or
not).

This loop executes only if I let counter run from a value smaller than
or equal to pi_maxnum. pi_maxnum was 36 in this case. If I say

for counter = 36 to (counter + pi_maxnum)

loop executes. But with

for counter = 37 to (counter + pi_maxnum)

nothing happens. I guess (counter + pi_maxnum) becomes equal to
pi_maxnum, and that counter is not evaluated on the right hand side.
Seems to me that ideally, as long as pi_maxnum 0, this should be an
endless loop regardless of the inital value of counter.


Tom Ogilvy skrev:
In the same module, run this as a test. Make the immediate window is
visible.

Sub aa()
For counter = 0 To pi_maximum
Debug.Print counter
Next
End Sub

see if the loop is executed

the problem you are dealing with is either a logic error or a failure on
your part to understand variable scope. It isn't something VBA/Excel would
consider an error - because people might intentionally design their code so
the loop is never executed under certain conditions. By using an variable as
one of the loop conditions, you are taking responsibility for determining if
the loop will run or not. So if you want a warning, you will have to
include that in the logic of your code.

--
Regards,
Tom Ogilvy

-




wrote in message
oups.com...
Hi,
I`ve done some rather basic programming in excel and in general I find
vba a useful tool. However, from time to time I run into some problems
that are very annoying because the program is unable to report on what
line of code causes problems. Today, I tried to run a macro that enters
a loop like

for counter = 0 to pi_maxnum

but the code never entered the loop and the program just stopped and
I`m right back in manual control over excel. The solution was to
hardcode the loop like

for counter = 0 to 10

and everything ran fine.

The pi_maxnum was defined as public in another module, I also tried
defining it as public in the module with the sub containing the loop,
to no effect.

I`m no vba expert, someone here can probably point out the problem, but
when the system never even to reports on why nothing happens .. it
should be a law against it. In this case I would excpect a message on
something wrong with the definition of pi_maxnum.

Anyway, if someone cares to share some thoughts on this I`d be glad.


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default strange behaviour - no feedback!

the loop boundaries are calculated upon reaching the For statement the first
time and never recalculate. I would assume that on entry, counter is not
initialized, so your upper bound was equivalent to pi_maximum alone.

--
Regards,
Tom Ogilvy


wrote in message
oups.com...
Ok, thanks a lot for your help, guess I need to put in some tests in my
code. It was not a problem with the variable pi_maxnum, it was declared
and given a value. In this case the problem was a logical error on my
part, actually the statement was

for counter = 42 to (counter + pi_maxnum)

I know, its nonsene, and I appologize for asking the wrong question. I
was somehow convinced I gave a correct minimal example (believe it or
not).

This loop executes only if I let counter run from a value smaller than
or equal to pi_maxnum. pi_maxnum was 36 in this case. If I say

for counter = 36 to (counter + pi_maxnum)

loop executes. But with

for counter = 37 to (counter + pi_maxnum)

nothing happens. I guess (counter + pi_maxnum) becomes equal to
pi_maxnum, and that counter is not evaluated on the right hand side.
Seems to me that ideally, as long as pi_maxnum 0, this should be an
endless loop regardless of the inital value of counter.


Tom Ogilvy skrev:
In the same module, run this as a test. Make the immediate window is
visible.

Sub aa()
For counter = 0 To pi_maximum
Debug.Print counter
Next
End Sub

see if the loop is executed

the problem you are dealing with is either a logic error or a failure on
your part to understand variable scope. It isn't something VBA/Excel

would
consider an error - because people might intentionally design their code

so
the loop is never executed under certain conditions. By using an

variable as
one of the loop conditions, you are taking responsibility for

determining if
the loop will run or not. So if you want a warning, you will have to
include that in the logic of your code.

--
Regards,
Tom Ogilvy

-




wrote in message
oups.com...
Hi,
I`ve done some rather basic programming in excel and in general I find
vba a useful tool. However, from time to time I run into some problems
that are very annoying because the program is unable to report on what
line of code causes problems. Today, I tried to run a macro that

enters
a loop like

for counter = 0 to pi_maxnum

but the code never entered the loop and the program just stopped and
I`m right back in manual control over excel. The solution was to
hardcode the loop like

for counter = 0 to 10

and everything ran fine.

The pi_maxnum was defined as public in another module, I also tried
defining it as public in the module with the sub containing the loop,
to no effect.

I`m no vba expert, someone here can probably point out the problem,

but
when the system never even to reports on why nothing happens .. it
should be a law against it. In this case I would excpect a message on
something wrong with the definition of pi_maxnum.

Anyway, if someone cares to share some thoughts on this I`d be glad.




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Strange if(***) behaviour? Excel 2003 - SPB Excel Discussion (Misc queries) 6 August 6th 06 05:34 PM
Strange VBA Behaviour Ricko Excel Programming 0 July 28th 05 07:53 AM
Strange behaviour Edgar Thoemmes Excel Worksheet Functions 1 February 8th 05 03:20 PM
Strange behaviour in VBA Help Michael Singmin Excel Programming 4 June 4th 04 07:06 PM
strange behaviour Patrick Molloy Excel Programming 0 September 4th 03 07:51 AM


All times are GMT +1. The time now is 06:32 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"