Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Visual Basic for Applications/Avoiding Change Event Recursion

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Summary This VBA code is intended to run in Microsoft Office applications that can run macros, like Excel or Word. It provides two different examples of a text box change event, one for TextBox1 and another for TextBox2. It will be noted that on displaying the form and entering one character into TextBox1, the resulting number found there is about 290 or so; this is coded to show the number of iterations of the change event that have taken place. Doing the same in TextBox2 shows that there has been just one run of the event. The code of the TextBox2_Change event avoids multiple runs of the procedure, avoiding the possibility of false results in certain circumstances. The VBA Code Code Changes For the ThisWorkbook Module '............................................... ' Notes: Code needs a user form named UserForm1, ' with two text boxes, TextBox1 and Textbox2, '............................................... Private Sub Workbook_Open() 'Runs on opening the workbook Load UserForm1 UserForm1.Show End Sub For the UserForm1 Module Private Sub TextBox1_Change() ' This Change event runs about 294 times ' for each character entered Static nC As Long 'yield to commands-just in case DoEvents 'increment for each iteration nC = nC + 1 'this line causes this procedure to run again TextBox1.Value = nC End Sub Private Sub TextBox2_Change() ' This Change event runs only once ' for each character entered Static nC As Long Static bEnableEvents As Boolean 'yield to commands-just in case DoEvents ' increment for each iteration nC = nC + 1 ' false to start then true after that If bEnableEvents = True Then Exit Sub End If bEnableEvents = True ' this runs only once TextBox2.Value = nC ' reset flag bEnableEvents = False End Sub See Also External Links