ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Is there a better code to do this? (https://www.excelbanter.com/excel-programming/427855-re-there-better-code-do.html)

Per Jessen

Is there a better code to do this?
 
Hi

You can turn off screenupdating and set calculation to manual, and finally
skip the select statement.

Sub aaa()
Dim TargetRange As Range
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
For Each ProgressHdr In rngProgresshdr.Cells
proPos = InStr(1, ProgressHdr.Address(ColumnAbsolute:=False), "$",
vbTextCompare)
ProgressLastColumn = Left(ProgressHdr.Address(ColumnAbsolute:=False),
proPos - 1)
If Right(ProgressHdr.Value, 4) = "Date" Then
Set TargetRange = ActiveSheet.Range(ProgressLastColumn & "5:" &
ProgressLastColumn & progresslastRow)
For Each c In TargetRange
If c.Value <= Date And c.Offset(0, 1).Value = "Projected" Then
c.Offset(0, 1).Value = "Past Due"
End If
Next
End If
Next ProgressHdr
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Hopes this helps.

---
Per

"Ayo" skrev i meddelelsen
...
I am trying to do a Find and Replace in Range("A5:AK1757") and I have the
following code to do it but it is just taking too long, more than 30
minutes.
IS there a better way to do this faster?
Thanks

For Each progresshdr In rngProgresshdr.Cells
proPos = InStr(1, progresshdr.Address(ColumnAbsolute:=False), "$",
vbTextCompare)
progresslastColumn = Left(progresshdr.Address(ColumnAbsolute:=False),
proPos - 1)

If Right(progresshdr.Value, 4) = "Date" Then
ActiveSheet.Range(progresslastColumn & "5:" & progresslastColumn &
progresslastRow).Select
For Each c In Selection
If c.Value <= Date And c.Offset(0, 1).Value = "Projected" Then
c.Offset(0, 1).Value = "Past Due"
End If
Next
End If
Next progresshdr




All times are GMT +1. The time now is 08:11 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com