Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hey all, good to come out here again.
I have some VBA that executes in "Private Sub Worksheet_Change", and it takes place whenever the user updates or makes changes to data on the spreadsheet. The user actually only makes changes in the C column but the rest of the spreadsheet refreshes accordingly. Anyway, part of my VBA access another Sheet and copies info from there to this sheet while also updating all the cells of the columns (except the C column). THE PROBLEM: As soon as the VBA starts changing the values on this sheet, it re-executes the "Private Sub Worksheet_Change" again and starts the Macro all over before it ever finishes. It gets caught in a never ending cycle?? So the VBA is activating itself because it produces a Worksheet_Change. But I only want it to run when the user changes a value in the C column???? I want to use "Worksheet_Change" instead of having a button that the user has to remember to push. What can I do? Please advise. DBAL |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi DBAL
You can stop the running of the events when your macro do his work like this Application.EnableEvents = flase 'your code Application.EnableEvents = True -- Regards Ron de Bruin http://www.rondebruin.nl "DBAL" wrote in message ... Hey all, good to come out here again. I have some VBA that executes in "Private Sub Worksheet_Change", and it takes place whenever the user updates or makes changes to data on the spreadsheet. The user actually only makes changes in the C column but the rest of the spreadsheet refreshes accordingly. Anyway, part of my VBA access another Sheet and copies info from there to this sheet while also updating all the cells of the columns (except the C column). THE PROBLEM: As soon as the VBA starts changing the values on this sheet, it re-executes the "Private Sub Worksheet_Change" again and starts the Macro all over before it ever finishes. It gets caught in a never ending cycle?? So the VBA is activating itself because it produces a Worksheet_Change. But I only want it to run when the user changes a value in the C column???? I want to use "Worksheet_Change" instead of having a button that the user has to remember to push. What can I do? Please advise. DBAL |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
also, as a precaution, add an onerror so that if you fall out, you always
re-enable, like Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ws_exit: Application.EnableEvents = False 'your code ws_exit: Application.EnableEvents = True End Sub -- HTH Bob Phillips ... looking out across Poole Harbour to the Purbecks (remove nothere from the email address if mailing direct) "Ron de Bruin" wrote in message ... Hi DBAL You can stop the running of the events when your macro do his work like this Application.EnableEvents = flase 'your code Application.EnableEvents = True -- Regards Ron de Bruin http://www.rondebruin.nl "DBAL" wrote in message ... Hey all, good to come out here again. I have some VBA that executes in "Private Sub Worksheet_Change", and it takes place whenever the user updates or makes changes to data on the spreadsheet. The user actually only makes changes in the C column but the rest of the spreadsheet refreshes accordingly. Anyway, part of my VBA access another Sheet and copies info from there to this sheet while also updating all the cells of the columns (except the C column). THE PROBLEM: As soon as the VBA starts changing the values on this sheet, it re-executes the "Private Sub Worksheet_Change" again and starts the Macro all over before it ever finishes. It gets caught in a never ending cycle?? So the VBA is activating itself because it produces a Worksheet_Change. But I only want it to run when the user changes a value in the C column???? I want to use "Worksheet_Change" instead of having a button that the user has to remember to push. What can I do? Please advise. DBAL |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
The following will test the worksheet change event for changes in column C
only. This might help ? Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 Then MsgBox "its C" End If End Sub Cheers Nigel "DBAL" wrote in message ... Hey all, good to come out here again. I have some VBA that executes in "Private Sub Worksheet_Change", and it takes place whenever the user updates or makes changes to data on the spreadsheet. The user actually only makes changes in the C column but the rest of the spreadsheet refreshes accordingly. Anyway, part of my VBA access another Sheet and copies info from there to this sheet while also updating all the cells of the columns (except the C column). THE PROBLEM: As soon as the VBA starts changing the values on this sheet, it re-executes the "Private Sub Worksheet_Change" again and starts the Macro all over before it ever finishes. It gets caught in a never ending cycle?? So the VBA is activating itself because it produces a Worksheet_Change. But I only want it to run when the user changes a value in the C column???? I want to use "Worksheet_Change" instead of having a button that the user has to remember to push. What can I do? Please advise. DBAL |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Wow, thanks I knew there had to be a way around this!
-----Original Message----- Hi DBAL You can stop the running of the events when your macro do his work like this Application.EnableEvents = flase 'your code Application.EnableEvents = True -- Regards Ron de Bruin http://www.rondebruin.nl "DBAL" wrote in message ... Hey all, good to come out here again. I have some VBA that executes in "Private Sub Worksheet_Change", and it takes place whenever the user updates or makes changes to data on the spreadsheet. The user actually only makes changes in the C column but the rest of the spreadsheet refreshes accordingly. Anyway, part of my VBA access another Sheet and copies info from there to this sheet while also updating all the cells of the columns (except the C column). THE PROBLEM: As soon as the VBA starts changing the values on this sheet, it re-executes the "Private Sub Worksheet_Change" again and starts the Macro all over before it ever finishes. It gets caught in a never ending cycle?? So the VBA is activating itself because it produces a Worksheet_Change. But I only want it to run when the user changes a value in the C column???? I want to use "Worksheet_Change" instead of having a button that the user has to remember to push. What can I do? Please advise. DBAL . |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Great suggestion, I will definitely add this in. Thanks
alot. DBAL -----Original Message----- also, as a precaution, add an onerror so that if you fall out, you always re-enable, like Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ws_exit: Application.EnableEvents = False 'your code ws_exit: Application.EnableEvents = True End Sub -- HTH Bob Phillips ... looking out across Poole Harbour to the Purbecks (remove nothere from the email address if mailing direct) "Ron de Bruin" wrote in message ... Hi DBAL You can stop the running of the events when your macro do his work like this Application.EnableEvents = flase 'your code Application.EnableEvents = True -- Regards Ron de Bruin http://www.rondebruin.nl "DBAL" wrote in message ... Hey all, good to come out here again. I have some VBA that executes in "Private Sub Worksheet_Change", and it takes place whenever the user updates or makes changes to data on the spreadsheet. The user actually only makes changes in the C column but the rest of the spreadsheet refreshes accordingly. Anyway, part of my VBA access another Sheet and copies info from there to this sheet while also updating all the cells of the columns (except the C column). THE PROBLEM: As soon as the VBA starts changing the values on this sheet, it re-executes the "Private Sub Worksheet_Change" again and starts the Macro all over before it ever finishes. It gets caught in a never ending cycle?? So the VBA is activating itself because it produces a Worksheet_Change. But I only want it to run when the user changes a value in the C column???? I want to use "Worksheet_Change" instead of having a button that the user has to remember to push. What can I do? Please advise. DBAL . |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Now this is nice... because it will only run the code
when a change is made in C right? If I put my code in the middle there. Awesome, let me play with this. Thanks! DBAL -----Original Message----- The following will test the worksheet change event for changes in column C only. This might help ? Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 Then MsgBox "its C" End If End Sub Cheers Nigel "DBAL" wrote in message ... Hey all, good to come out here again. I have some VBA that executes in "Private Sub Worksheet_Change", and it takes place whenever the user updates or makes changes to data on the spreadsheet. The user actually only makes changes in the C column but the rest of the spreadsheet refreshes accordingly. Anyway, part of my VBA access another Sheet and copies info from there to this sheet while also updating all the cells of the columns (except the C column). THE PROBLEM: As soon as the VBA starts changing the values on this sheet, it re-executes the "Private Sub Worksheet_Change" again and starts the Macro all over before it ever finishes. It gets caught in a never ending cycle?? So the VBA is activating itself because it produces a Worksheet_Change. But I only want it to run when the user changes a value in the C column???? I want to use "Worksheet_Change" instead of having a button that the user has to remember to push. What can I do? Please advise. DBAL . |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Array functions ARGHH! | Excel Worksheet Functions | |||
Array functions ARGHH! | Excel Discussion (Misc queries) | |||
Recursion with user defined functions | Excel Programming | |||
worksheet_change vs. calculate, and worksheet_change not running | Excel Programming | |||
worksheet_change vs. calculate, and worksheet_change not running | Excel Programming |