Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Is there a way to trigger an event if any data in modified on ONLY the
current worksheet. If changes are made on another Worksheet, it should NOT test TRUE so "if ThisWorkbook.Saved = true then" does not seem to help... Also, I would not want it to test TRUE if the cursor is moved. Only when any cell is changed. If (ActiveWorkSheetDataChanged) Then Range("P4") = "Reset" End If |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ws_exit: Application.EnableEvents = False 'add your code here ws_exit: Application.EnableEvents = True End Sub 'This is worksheet event code, which means that it needs to be 'placed in the appropriate worksheet code module, not a standard 'code module. To do this, right-click on the sheet tab, select 'the View Code option from the menu, and paste the code in. -- HTH Bob Phillips "CRayF" wrote in message ... Is there a way to trigger an event if any data in modified on ONLY the current worksheet. If changes are made on another Worksheet, it should NOT test TRUE so "if ThisWorkbook.Saved = true then" does not seem to help... Also, I would not want it to test TRUE if the cursor is moved. Only when any cell is changed. If (ActiveWorkSheetDataChanged) Then Range("P4") = "Reset" End If |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
interesting , but cant get it to work .. could you add more info for a
newbie? Matt |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
it says "invalid outside procedure"
|
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
which line? did you note the instructions where to store it?
-- HTH Bob Phillips "Matt" wrote in message ups.com... it says "invalid outside procedure" |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Bob,
This Worksheet has several cells that when selected execute certain actions. When the K1 is selected the this Worksheet has a set of cells that are copied from the source Program Summary Worksheet Template to refresh it. (and after answering Yes to a message). As soon as this is done, I then set Range("N3").Value = "default". The idea is that the first time €śafter€ť all this is copied over, as soon as one cell is manually changes, then Id like to set the cell value of K1 to €śModified!€ť. After cut and pasting the code you provided, this ran with no error messages but "immediately" changed the cell K1 back to €śModified!€ť I suspect it has something to do with the timing of the data being copied€¦ any clues? Heres the complete set of code within this module and your sub-routine at the bottom. -------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim srcProgramDataInputWs As Worksheet Dim srcProgramSummaryTemplateWs As Worksheet Dim srcProgramSummaryWs As Worksheet Dim srcBettingTemplateWs As Worksheet Dim racePark As Variant Dim i As Integer Dim j As Integer Dim k As Integer Set srcProgramSummaryTemplateWs = Sheets("@TemplateProgramSummary") Set srcProgramSummaryWs = Sheets("ProgramSummary") Set srcBettingTemplateWs = Sheets("@TempleteBetting") Set srcProgramDataInputWs = Sheets("ProgramDataInput") racePark = Left(srcProgramDataInputWs.Range("H3").Value, 3) If Target.Address = "$A$1" Then Dim exists As Boolean Dim ExistingBettingWsName As Worksheet Dim NewBettingWsName As Variant Range("N3").Select NewBettingWsName = Format(srcProgramDataInputWs. _ Range("F3").Value, "mm-dd ") & _ Left(srcProgramDataInputWs.Range("H3").Value, 3) exists = False For Each ExistingBettingWsName In ThisWorkbook.Sheets If ExistingBettingWsName.Name = NewBettingWsName Then exists = True Exit For End If Next If exists Then MsgBox "Betting Worksheet for [ " & NewBettingWsName & _ " ] already exists. [RENAME] or [DELETE] that Worksheet and try again." Else Dim NewBettingWs As Worksheet Dim NewBettingWsTabColor As Variant Dim src As Variant If racePark = "PHX" Then NewBettingWsTabColor = 10 If racePark = "WHE" Then NewBettingWsTabColor = 46 If racePark = "WON" Then NewBettingWsTabColor = 41 Range("N3").Select srcBettingTemplateWs.Copy befo=ActiveSheet Set NewBettingWs = ActiveSheet With NewBettingWs .Name = NewBettingWsName .Unprotect .Tab.ColorIndex = NewBettingWsTabColor 'or replace with index number src = srcProgramDataInputWs.Range("B3").Value i = 3 j = 0 Do Until src = "" srcBettingTemplateWs.Rows("11:22").Copy .Cells((j * 12) + 11, 1) i = i + 12 j = j + 1 src = srcProgramDataInputWs.Cells(i, 2).Value Loop .Protect End With End If End If If Target.Address = "$K$1" Then If MsgBox("Are you sure you want to CLEAR this Worksheet?", _ vbYesNo) = vbYes Then ActiveSheet.Unprotect ActiveSheet.Range("N3:Q242").Formula = _ srcProgramSummaryTemplateWs.Range("N3:Q242").Formu la ActiveSheet.Protect Range("N3").Value = "default" Range("N3").Select End If End If If Target.Address = "$B$1" Then Dim SelectedTxtInputFile As Variant SelectedTxtInputFile = Application.GetOpenFilename( _ "Race Program Input Files (*.txt),*.txt", , _ "Select which RACE Program to import", , False) If SelectedTxtInputFile = "False" Then Range("N3").Select Else srcProgramDataInputWs.Range("A3:H242").ClearConten ts With srcProgramDataInputWs.QueryTables.Add(Connection:= _ "TEXT;" & SelectedTxtInputFile _ , Destination:=srcProgramDataInputWs.Range("A3:H242" )) .Name = "ImportProgramData" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 437 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileOtherDelimiter = "|" .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End If Range("N3").Select End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ws_exit: Application.EnableEvents = False 'add your code here Range("K1").Value = "Modified" ws_exit: Application.EnableEvents = True End Sub |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Trigger Event Code | Excel Programming | |||
trigger an EVENT when the value in a cell changes? | Excel Programming | |||
Trigger an event on Checkbox change | Excel Programming | |||
Trigger Event | Excel Programming |