Home |
Search |
Today's Posts |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
It's fine to post the full code, but if it's too complex, you may not get many
people to read through it. But this sub: Private Sub LP1_Change() LP1.Value = Sheets("data").Range("line1lp").Value LP1 = WorksheetFunction.Text(Range("line1lp"), "$0.00") end sub is trying to change the value of LP1 (twice!) And as soon as the first line executes, the lp1_change event has to fire. And over and over and over. It'll take awhile to even get to the second line of that procedure! Option Explicit Dim BlkProc as boolean Private Sub LP1_Change() if blkproc = true then exit sub blkproc = True 'if the cell is already displays what you want: LP1.Value = Sheets("data").Range("line1lp").Text 'or use VBA's version of the =Text() worksheet function 'but don't use both! LP1.Value = Format(sheets("data").range("line1lp").value, "$0.00") blkproc = false end sub But I don't understand what this subroutine is doing. If the user changes the value of whatever LP1 is, then you're overriding it with what's in that cell. Why let the user change anything--just plop the value into a label and show it to them. Brad wrote: Dave, I've tried this and it works. However, the full code is very big. If you take the below section of code and repeat 29 additional times (the variables changes, LP2, SP2, Total2 - LP3, SP3, Total3, through LP30, SP30, Total30). So, I've added the errorhandling and it comes back with "Out of stack space". I've stepped through my code and at: LP1.Value = Sheets("data").Range("line1lp").Value it triggers the event: Private Sub LP1_Change() LP1.Value = Sheets("data").Range("line1lp").Value LP1 = WorksheetFunction.Text(Range("line1lp"), "$0.00") end sub Which goes into a continous loop. Any ideas? Also, it only triggers events from the code lines that contain LP1, SP1, Total1, through LP4, SP4, Total4. Everything else steps through without triggering an event. I can post the entire code if you'd like, it is very repetitive (probably could use looping but don't know how) and very large. Let me know if it kosher to post full code. Thanks. "Dave Peterson" wrote: What event is still firing? Application.enableevents will stop worksheet, workbook, application events. It won't stop combobox1_change events. But you can do your own housekeeping. At the top of your userform module: Option Explicit Dim BlkEvents as boolean 'now your code Private Sub UserForm_Activate() 'Don't hide your errors! 'On Error Resume Next blkproc = true Startdate.Value = Range("e56").Value 'event gets triggered blkproc = false blkproc = true Enddate.Value = Range("h56").Value 'event gets triggered blkproc = false ..... private Textbox697_change() if blkproc = true then exit sub 'rest of real code end sub And if you're doing lots in a row, you could stack them: blkproc = true Startdate.Value = Range("e56").Value 'event gets triggered Enddate.Value = Range("h56").Value 'event gets triggered TextBox697.Value = Sheets("data").Range("F9").Value .... blkproc = false Brad wrote: Hello, I'm having a problem that I was hoping .enableevents = false would solve but it doesn't work at all. The events are still being triggered. The problem is when I activate the userform, it triggers events that are associated with the particular object. Below is my code with comments next to the lines that have events that are being triggered: How can I stop these events from triggering? I've tried Application.EnableEvents = False but it's not stopping them. Code- Private Sub UserForm_Activate() Application.EnableEvents = False On Error Resume Next Startdate.Value = Range("e56").Value 'event gets triggered Enddate.Value = Range("h56").Value 'event gets triggered TextBox697.Value = Sheets("data").Range("F9").Value 'event gets triggered TextBox23.Value = Sheets("data").Range("J101").Value * 100 & "%" 'event gets triggered If Sheets("data").Range("abselect1").Value = "Y" Then Abuse1.Value = True End If If Sheets("data").Range("inwarnty1").Value = "Y" Then inwty1.Value = True End If Term1.Value = Range("trm1").Value LP1.Value = Sheets("data").Range("line1lp").Value 'event gets triggered SP1.Value = Sheets("data").Range("line1sp").Value 'event gets triggered Total1.Value = Sheets("data").Range("Line1tot").Value 'event gets triggered EOS1.Value = Sheets("data").Range("eosdte1").Value 'event gets triggered ComboBox1.Value = Sheets("data").Range("model1").Value 'event gets triggered Application.EnableEvents = True -- Dave Peterson -- Dave Peterson |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Application.Enableevents = False doesn't stop all events? | Excel Programming | |||
if AddIn_1 isRunning vbcr application.enableEvents=False vbcr end if: how to do this?? | Excel Programming | |||
preventing Application.EnableEvents = False | Excel Programming | |||
Application.EnableEvents = False not working | Excel Programming | |||
Problems with BeforeSave and Application.EnableEvents = False | Excel Programming |