Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 134
  • Last Modified:

Trigger only once

I want an Onchange event to call a function and trigger only once

private sub xyz_OnChange()
   cocojumbo() 'This should be executed only once and in later onchange event I do not want anything to happen
End sub

Pls help
0
santosh_14
Asked:
santosh_14
1 Solution
 
OtanaCommented:
Use a variable at from level.

private HasRun as boolean

set it to false in your form_load

private sub xyz_OnChange()

If not HasRun then
  cocojumbo()
  HasRun=true
End If

End sub



0
 
OtanaCommented:
Sorry that should be form level, not from...
0
 
santosh_14Author Commented:
Thnks!!
Is there nothing in visual basic like:

set cocojumbo = dead

:-)

??

Will wait for today and if no better answer will give you the credit.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
santosh_14Author Commented:
Thnks!!
Is there nothing in visual basic like:

set cocojumbo = dead

:-)

??

Will wait for today and if no better answer will give you the credit.
0
 
OtanaCommented:
Another option I can think off is adding a static variable to your function, which you set to true/false the first time your function runs, and test on that variable inside your function.

But I'm not entirely sure which default valeu a sttic boolean will get when you declare it.

public function CocoJumbo()
  dim static HasRun as boolean

  If HasRun = false Then
    ... ' Run code

    HasRun=true
  End If
end function
0
 
BozzoCageCommented:
Otana, correct is
   static HasRun as boolean
and not
   dim static HasRun as boolean

>But I'm not entirely sure which default valeu a sttic boolean will get when you declare it.

Every variable has default value of it's type (Boolen->False, Integer->0, String->"") at creation time.
So static boolean var has default value False.
Otherwise your example is correct (and preferred for "triggers", since I doesn't require global variable.


santosh_14, just press F1 on Static, and you'll get an explanation. I think there is no better way of figuring out if (or how many times) function was already run than using static var.

-BozzoCage
0
 
OtanaCommented:
BozzoCage

You're right about the static. Sorry, I haven't used statics in quite a while, and on my age you tend to forget these things... :)

Thnx
0
 
deightonCommented:
static b as boolean

if b then exit sub else b = true
0
 
Arthur_WoodCommented:
Like ANY Boolean variable, a STATIC Bool;ean get a default value of FALSE
0
 
VKCommented:
Hey Experts:

Why call xyz_OnChange() twice ?
If the event initiator is a Textbox-Change for example:

Sub Text1_Change
   call xyz_OnChange
   TextBox1.Locked = True
end sub

But perhaps your context doesn't allow this.

:-)
0
 
santosh_14Author Commented:
Ok! Serves the purpose
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now