Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#6
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#8
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#9
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#10
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#11
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Trigger a Macro | Excel Programming | |||
Trigger macro on value only | Excel Programming | |||
macro trigger | Excel Discussion (Misc queries) | |||
Another way to trigger a macro? | Excel Programming | |||
Macro trigger? | Excel Programming |