quick question that shouldn’t really require any of my code. During my application, I use a ‘for each’ loop, that loops through a range of cells, and right now when the user runs it, the focus of the screen follows the selection as it jumps from cell to cell within that range. Is there any way to prevent the focus from following the path of the loop during the iteration, maybe have the user simply see something that says “processing” until it is complete?
Thanks in advance, I appreciate any and all help.
Code:
Dim iLoop As Integer
For iLoop = 5 To lastRow
Sheets("Planners").Activate
Range("J" & iLoop).Select
Range(Cells(iLoop, 9)).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Yellow, Orange, Green, Red"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = "Invalid Entry"
.ErrorMessage = "Please choose from dropdown"
.ShowInput = True
.ShowError = True
End With
Next iLoop
Apparently you are using
.Selectin your code. There is a chance it’s a right thing to do, but most of the time it isn’t.So stop using
SelectandActiveCelland refer to cells using indices/references.The above would be the correct solution.
The wrong solution would be to use
Application.ScreenUpdating = Falsebefore the loop andApplication.ScreenUpdating = Trueafter the loop.Edit:
But given this code, you don’t need a loop at all: