Welcome to the forum - please take a minute and read the FAQs at the link in my sig
Didn't test, but I made some unsolicited suggestions.
I 'think' the naked Range one was the issue
Option Explicit
'example of passing a parameter to the sub so
'that you don't need both a Hide and Unhide version
Sub LiteFrameKitOnly(Hide As Boolean)
With ActiveSheet
.Unprotect
.Rows("19:102").EntireRow.Hidden = Hide
.Protect
End With
End Sub
'Using naked Range (i.e. no dot or no specific worksheet will default to what ever the active worksheet is,
'which may not be what you want
'I added the dot and surrounded it with a With / End With so that all 3 statements 'belong' to
the With Activesheet
Sub ClearActiveKval()
With ActiveSheet
.Unprotect
.Range("AZ1:CF800").Clear
.Protect
End With
End Sub
Sub ClearInactiveKval()
With ActiveSheet
.Unprotect
.Range("CG1:DN800").Clear
.Protect
End With
End Sub
'this was very inefficient since it would check everything every time any cell changed
'I think you only need it to check when c5, c1, ... changed
'
'also good idea to disable events just in case the event handler changes something and it calls itself
'
'Select Case will 'switch' using the first cell of the change and if there' no match
'it won't do anything. Cleaner than a lot of If/Thens
'
'the (r.value = "Hide") returns a boolean (True / False) which is passed (see the first suggestion above)
'to the more general purpose subs to hide or unhide the rows
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
ActiveSheet.Activate ' activesheet is active :-)
Set r = Target.Cells(1, 1)
Application.ScreenUpdating = False
Application.EnableEvents = False
Select Case r.Address(False, False)
Case "c5"
If r.Value = "Clear" Then Call ClearInactiveKval
Case "c1"
Call LiteFrameKitOnlyHide(r.Value = "Hide")
Case "c14"
Call LiteKitSelection(r.Value = "Hide")
Case "c40"
Call OneStrike(r.Value = "Hide")
Case "c41"
Call TwoStrike(r.Value = "Hide")
Case "c42"
Call MiscHardware(r.Value = "Hide")
End Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Edit -- Now that you added the error message (Out of Stack Space), I think it was your event handler calling itself over and over.
The Application.DisableEvents should fix that