ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Macro Trigger (https://www.excelbanter.com/excel-programming/434711-macro-trigger.html)

Stringhaussen

Macro Trigger
 
Hi,

I've created a spreadsheet where I want rows to hide/reveal depending on the
contents of a Cell. The code I used below works however every time I complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen

Sam Wilson

Macro Trigger
 
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.address = $F$18 then

'Your code

end if

end sub

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending on the
contents of a Cell. The code I used below works however every time I complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen


Stringhaussen

Macro Trigger
 
Hi Sam,

Thanks for your help. I'm still not getting this to work, if I type in any
other cell after I hit enter it automatically selects row 19:24 as in the
coding.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Target.Address = F18 Then
ElseIf Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
End If
End Sub

Regards,

Stringhaussen

"Sam Wilson" wrote:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.address = $F$18 then

'Your code

end if

end sub

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending on the
contents of a Cell. The code I used below works however every time I complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen


Mike H

Macro Trigger
 
Hi,

You could re-write your code a bit more effeciently like this

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address < "$F$18" Then Exit Sub
If UCase(Target.Value) = "NO" Or UCase(Target.Value) = "" Then
Rows(1).EntireRow.Hidden = True
Rows("19:24").EntireRow.Hidden = True
ElseIf UCase(Target.Value) = "YES" Then
Rows(1).EntireRow.Hidden = False
Rows("19:24").EntireRow.Hidden = False
End If
End Sub

Mike

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending on the
contents of a Cell. The code I used below works however every time I complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen


GB

Macro Trigger
 
Take a look at Mike H's response, whichever "method" you adopt, the
comparison to target.address should be as text.

target.address = "F18" or
target.address = "$F$18"


"Stringhaussen" wrote:

Hi Sam,

Thanks for your help. I'm still not getting this to work, if I type in any
other cell after I hit enter it automatically selects row 19:24 as in the
coding.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Target.Address = F18 Then
ElseIf Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
End If
End Sub

Regards,

Stringhaussen

"Sam Wilson" wrote:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.address = $F$18 then

'Your code

end if

end sub

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending on the
contents of a Cell. The code I used below works however every time I complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen


Mike H

Macro Trigger
 
oops,

forgot a line

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address < "$F$18" Then Exit Sub
If UCase(Target.Value) = "NO" Or UCase(Target.Value) = "" Then
Rows(1).EntireRow.Hidden = True
Rows("19:24").EntireRow.Hidden = True
ElseIf UCase(Target.Value) = "YES" Then
Rows(1).EntireRow.Hidden = False
Rows("19:24").EntireRow.Hidden = False
End If
Application.ScreenUpdating = True
End Sub

Mike

"Mike H" wrote:

Hi,

You could re-write your code a bit more effeciently like this

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address < "$F$18" Then Exit Sub
If UCase(Target.Value) = "NO" Or UCase(Target.Value) = "" Then
Rows(1).EntireRow.Hidden = True
Rows("19:24").EntireRow.Hidden = True
ElseIf UCase(Target.Value) = "YES" Then
Rows(1).EntireRow.Hidden = False
Rows("19:24").EntireRow.Hidden = False
End If
End Sub

Mike

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending on the
contents of a Cell. The code I used below works however every time I complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen


Don Guillett

Macro Trigger
 
You didn't follow Sam's instruction. To do it the way he showed you MUST use
$ and caps. You can also use
if target.address<range("f18").address or INTERSECT
try this
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address < Range("F18").Address Then Exit Sub
Rows.Hidden = False
If LCase(Target) = "no" Or _
Len(Application.Trim(Target)) < 1 Then _
Rows("19:24").Hidden = True
End Sub


--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Stringhaussen" wrote in message
...
Hi Sam,

Thanks for your help. I'm still not getting this to work, if I type in any
other cell after I hit enter it automatically selects row 19:24 as in the
coding.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Target.Address = F18 Then
ElseIf Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
End If
End Sub

Regards,

Stringhaussen

"Sam Wilson" wrote:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.address = $F$18 then

'Your code

end if

end sub

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending
on the
contents of a Cell. The code I used below works however every time I
complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and
then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen



Stringhaussen

Macro Trigger
 
Thanks Mike,

Worked an absolute treat.

Regards,
Stringhaussen

"Mike H" wrote:

Hi,

You could re-write your code a bit more effeciently like this

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address < "$F$18" Then Exit Sub
If UCase(Target.Value) = "NO" Or UCase(Target.Value) = "" Then
Rows(1).EntireRow.Hidden = True
Rows("19:24").EntireRow.Hidden = True
ElseIf UCase(Target.Value) = "YES" Then
Rows(1).EntireRow.Hidden = False
Rows("19:24").EntireRow.Hidden = False
End If
End Sub

Mike

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending on the
contents of a Cell. The code I used below works however every time I complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen


Mike H

Macro Trigger
 
Glad I could help

"Stringhaussen" wrote:

Thanks Mike,

Worked an absolute treat.

Regards,
Stringhaussen

"Mike H" wrote:

Hi,

You could re-write your code a bit more effeciently like this

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address < "$F$18" Then Exit Sub
If UCase(Target.Value) = "NO" Or UCase(Target.Value) = "" Then
Rows(1).EntireRow.Hidden = True
Rows("19:24").EntireRow.Hidden = True
ElseIf UCase(Target.Value) = "YES" Then
Rows(1).EntireRow.Hidden = False
Rows("19:24").EntireRow.Hidden = False
End If
End Sub

Mike

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending on the
contents of a Cell. The code I used below works however every time I complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen


Don Guillett

Macro Trigger
 
Didn't see anything about row 1 in the post. Also try the "dreaded space
bar" in f18. Also, what do you want to do for any other entry besides yes no
or blank??

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Stringhaussen" wrote in message
...
Thanks Mike,

Worked an absolute treat.

Regards,
Stringhaussen

"Mike H" wrote:

Hi,

You could re-write your code a bit more effeciently like this

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address < "$F$18" Then Exit Sub
If UCase(Target.Value) = "NO" Or UCase(Target.Value) = "" Then
Rows(1).EntireRow.Hidden = True
Rows("19:24").EntireRow.Hidden = True
ElseIf UCase(Target.Value) = "YES" Then
Rows(1).EntireRow.Hidden = False
Rows("19:24").EntireRow.Hidden = False
End If
End Sub

Mike

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending
on the
contents of a Cell. The code I used below works however every time I
complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and
then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen



Mike H

Macro Trigger
 
Don,

Your right, I read A19 as A1 and included that. Hope the OP spots it.

Mike

"Don Guillett" wrote:

Didn't see anything about row 1 in the post. Also try the "dreaded space
bar" in f18. Also, what do you want to do for any other entry besides yes no
or blank??

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Stringhaussen" wrote in message
...
Thanks Mike,

Worked an absolute treat.

Regards,
Stringhaussen

"Mike H" wrote:

Hi,

You could re-write your code a bit more effeciently like this

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address < "$F$18" Then Exit Sub
If UCase(Target.Value) = "NO" Or UCase(Target.Value) = "" Then
Rows(1).EntireRow.Hidden = True
Rows("19:24").EntireRow.Hidden = True
ElseIf UCase(Target.Value) = "YES" Then
Rows(1).EntireRow.Hidden = False
Rows("19:24").EntireRow.Hidden = False
End If
End Sub

Mike

"Stringhaussen" wrote:

Hi,

I've created a spreadsheet where I want rows to hide/reveal depending
on the
contents of a Cell. The code I used below works however every time I
complete
another cell on the spreadsheet the macro is triggered.

Is there a way to only run the one time when you complete cell F18 and
then
have it disabled until you change that cell value again?

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Range("F18").Text = "No" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
ElseIf Range("F18").Text = "Yes" Then
Rows("18:25").Select
Range("A19").Activate
Selection.EntireRow.Hidden = False
Exit Sub
ElseIf Range("F18").Text = "" Then
Rows("19:24").Select
Range("A19").Activate
Selection.EntireRow.Hidden = True
Exit Sub
End If
End Sub

Thanks,
Stringhaussen





All times are GMT +1. The time now is 01:35 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com