Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 20
Default Worksheet_Change macro locks up Excel


I have a worksheet on which there are data validation lists in
B7,B11,B15, and B23. When the user selects "Report" in any of these, I
want the cell in column D on the same row to return "N/A". Below is my
code. The problem is, when it executes the program gets locked in
calculation mode. Any suggestions?

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B7").Value = "Report" Then
Range("D7").Value = "N/A"

End If

If Range("B11").Value = "Report" Then
Range("D11").Value = "N/A"

End If

If Range("B15").Value = "Report" Then
Range("D15").Value = "N/A"

End If

If Range("B23").Value = "Report" Then
Range("D23").Value = "N/A"

End If




End Sub

  #2   Report Post  
Posted to microsoft.public.excel.programming
JNW JNW is offline
external usenet poster
 
Posts: 480
Default Worksheet_Change macro locks up Excel

excel isn't freezing, it is continually running the code. Because with each
change of the "D" column, excel restarts the sub, which changes a cell, which
restarts the sub, etc.

To prevent this, insert exit sub commands in each if statement like below:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B7").Value = "Report" Then
Range("D7").Value = "N/A"
Exit Sub
End If

If Range("B11").Value = "Report" Then
Range("D11").Value = "N/A"
Exit Sub
End If

If Range("B15").Value = "Report" Then
Range("D15").Value = "N/A"
Exit Sub
End If

If Range("B23").Value = "Report" Then
Range("D23").Value = "N/A"
Exit Sub
End If
End Sub


"JG Scott" wrote:


I have a worksheet on which there are data validation lists in
B7,B11,B15, and B23. When the user selects "Report" in any of these, I
want the cell in column D on the same row to return "N/A". Below is my
code. The problem is, when it executes the program gets locked in
calculation mode. Any suggestions?

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B7").Value = "Report" Then
Range("D7").Value = "N/A"

End If

If Range("B11").Value = "Report" Then
Range("D11").Value = "N/A"

End If

If Range("B15").Value = "Report" Then
Range("D15").Value = "N/A"

End If

If Range("B23").Value = "Report" Then
Range("D23").Value = "N/A"

End If




End Sub


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Worksheet_Change macro locks up Excel

Before you change a value, tell excel to stop looking:

application.enableevents = false
range("d11").value = "N/A"
application.enableevents = true

But it looks like you could do something like this:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count 1 Then Exit Sub
If Intersect(Target, Me.Range("b7,b11,b15,b23")) Is Nothing Then
Exit Sub
End If

If LCase(Target.Value) = LCase("Report") Then
Application.EnableEvents = False
Target.Offset(0, 2).Value = "N/A"
Application.EnableEvents = True
End If
End Sub



JNW wrote:

excel isn't freezing, it is continually running the code. Because with each
change of the "D" column, excel restarts the sub, which changes a cell, which
restarts the sub, etc.

To prevent this, insert exit sub commands in each if statement like below:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B7").Value = "Report" Then
Range("D7").Value = "N/A"
Exit Sub
End If

If Range("B11").Value = "Report" Then
Range("D11").Value = "N/A"
Exit Sub
End If

If Range("B15").Value = "Report" Then
Range("D15").Value = "N/A"
Exit Sub
End If

If Range("B23").Value = "Report" Then
Range("D23").Value = "N/A"
Exit Sub
End If
End Sub

"JG Scott" wrote:


I have a worksheet on which there are data validation lists in
B7,B11,B15, and B23. When the user selects "Report" in any of these, I
want the cell in column D on the same row to return "N/A". Below is my
code. The problem is, when it executes the program gets locked in
calculation mode. Any suggestions?

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B7").Value = "Report" Then
Range("D7").Value = "N/A"

End If

If Range("B11").Value = "Report" Then
Range("D11").Value = "N/A"

End If

If Range("B15").Value = "Report" Then
Range("D15").Value = "N/A"

End If

If Range("B23").Value = "Report" Then
Range("D23").Value = "N/A"

End If




End Sub



--

Dave Peterson
  #4   Report Post  
Posted to microsoft.public.excel.programming
JNW JNW is offline
external usenet poster
 
Posts: 480
Default Worksheet_Change macro locks up Excel

JG-

Use Dave's more concise method. The multiple if statements can get
confusing at times, and they really start to add up. Couldn't remember how
to do what he did myself.

JNW

"Dave Peterson" wrote:

Before you change a value, tell excel to stop looking:

application.enableevents = false
range("d11").value = "N/A"
application.enableevents = true

But it looks like you could do something like this:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count 1 Then Exit Sub
If Intersect(Target, Me.Range("b7,b11,b15,b23")) Is Nothing Then
Exit Sub
End If

If LCase(Target.Value) = LCase("Report") Then
Application.EnableEvents = False
Target.Offset(0, 2).Value = "N/A"
Application.EnableEvents = True
End If
End Sub



JNW wrote:

excel isn't freezing, it is continually running the code. Because with each
change of the "D" column, excel restarts the sub, which changes a cell, which
restarts the sub, etc.

To prevent this, insert exit sub commands in each if statement like below:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B7").Value = "Report" Then
Range("D7").Value = "N/A"
Exit Sub
End If

If Range("B11").Value = "Report" Then
Range("D11").Value = "N/A"
Exit Sub
End If

If Range("B15").Value = "Report" Then
Range("D15").Value = "N/A"
Exit Sub
End If

If Range("B23").Value = "Report" Then
Range("D23").Value = "N/A"
Exit Sub
End If
End Sub

"JG Scott" wrote:


I have a worksheet on which there are data validation lists in
B7,B11,B15, and B23. When the user selects "Report" in any of these, I
want the cell in column D on the same row to return "N/A". Below is my
code. The problem is, when it executes the program gets locked in
calculation mode. Any suggestions?

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B7").Value = "Report" Then
Range("D7").Value = "N/A"

End If

If Range("B11").Value = "Report" Then
Range("D11").Value = "N/A"

End If

If Range("B15").Value = "Report" Then
Range("D15").Value = "N/A"

End If

If Range("B23").Value = "Report" Then
Range("D23").Value = "N/A"

End If




End Sub



--

Dave Peterson

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
Trigger Macro by Worksheet_Change JSnow Excel Discussion (Misc queries) 5 October 2nd 08 06:27 PM
Excel 2003 has wrong timing using the worksheet_change macro Jan Excel Worksheet Functions 0 January 14th 06 06:30 AM
calc locks up after running a macro that moves sheets to a new fil shibao Excel Discussion (Misc queries) 0 November 7th 05 10:58 PM
Macro locks me in a single XLS file Luca T. Excel Programming 5 September 13th 04 01:58 AM
Using Worksheet_Change to Auto Run a Macro Katrina Excel Programming 2 September 25th 03 01:57 PM


All times are GMT +1. The time now is 02:59 AM.

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

About Us

"It's about Microsoft Excel"