我在VBA中遇到了一个循环问题

时间:2016-06-30 12:12:01

标签: excel vba excel-vba

我正在编写代码来搜索范围内的每个单元格。我想找到2个或更少字符的所有值(例如“12”“ab”)然后删除那些单元格。我有点工作,但VBA代码运行速度非常慢,每次运行仅适用于1列。因此它不会找到所有内容,只需在A列中找到它,然后代码将结束而不会移动到B列上。

到目前为止,这是我的代码:

Sub test2()
Dim i As Integer
Dim j As Integer

For i = 1 To 524
    For j = 1 To 12
        If Len(Cells(i, j)) <= 2 Then
            Cells(i, j).Delete Shift:=xlToLeft
        End If
    Next j
Next i
End Sub

3 个答案:

答案 0 :(得分:2)

考虑使用:

Sub test2()
    Dim i As Integer
    Dim j As Integer

    Application.ScreenUpdating = False
        For i = 1 To 524
            For j = 12 To 1 Step -1
                If Len(Cells(i, j)) <= 2 Then
                    Cells(i, j).Delete Shift:=xlToLeft
                End If
            Next j
        Next i
    Application.ScreenUpdating = True
End Sub

答案 1 :(得分:0)

使用范围,因此请设置r=range("a1:l524),然后使用for each cell in r,然后执行相同操作,if len(r.value)<=2 then cell.delete

答案 2 :(得分:-1)

定义要检查的范围并执行范围

的每个单元格的控件
Public Sub test2()
    Dim cell As Range

    For Each cell In Range("A1:X52")
        If Len(cell) <= 2 Then
            cell.Delete Shift:=xlToLeft
        End If
    Next
End Sub

它应该做的工作