我有以下代码非常慢。关于如何加快速度的任何想法?
一些背景,在之前的Sub中我拍了一个范围,然后复制并粘贴它。现在我需要根据代码更改值。是否有可能采用这个范围并对其进行修改而不先粘贴它?
Sub ChangeArea()
Dim Book As Workbook
Dim Sheet As Worksheet
Dim AreaRange As Range
Dim LastRow
Dim c As Range
Set Book = Workbooks("Testing")
Set Sheet = Book.Worksheets("Data")
Sheet.Activate
LastRow = Sheet.Cells(Rows.Count, "AG").End(xlUp).Row
Set AreaRange = Sheet.Range("AG5:AG" & LastRow)
For Each c In AreaRange.Cells
If c.Value = "10" Then
c.Value = "Mark"
ElseIf c.Value = "will" Then
c.Value = "William"
ElseIf c.Value = "Uncle" Then
c.Value = "Bill"
ElseIf c.Value = "Roomate" Then
c.Value = "Robert"
Else: End If
Next
End Sub
答案 0 :(得分:5)
选项可能是在您的范围内使用Replace
方法。请参阅下文并尝试适应您的工作表。
Sub ChangeThem()
Dim rng As Range
Dim lRow As Long
lRow = Sheet1.Cells(Rows.Count, "AG").End(xlUp).Row
Set rng = Sheet1.Range("AG5:AG" & lRow)
rng.Replace what:=1, replacement:="One"
rng.Replace what:=2, replacement:="Two"
rng.Replace what:=3, replacement:="Three"
End Sub
答案 1 :(得分:3)
尝试添加
Application.ScreenUpdating = false
到顶部
Application.ScreenUpdating = True
到底部
这样可以防止屏幕在每次更改时都更新。