0

当特定“NAME”列中的字符少于 4 个时,我正在使用以下代码尝试删除整行。(即第 1 行中的标题为 NAME 的列) 数据库当前有大约 10,000 行。我知道现在的代码很接近,但是在尝试运行它时出现 VB 错误。我想我可能会按名称错误地搜索特定列。

Sub Macro2()

' Macro to delete rows if there are less than 4 in the NAME column

    Dim LR As Long, i As Long
    Application.ScreenUpdating = False
    LR = Range("NAME" & Rows.Count).End(xlUp).Row
    For i = LR To 1 Step -1
        If Len(Range("NAME" & i).Value) < 4 Then Rows(i).Delete
    Next i
    Application.ScreenUpdating = True

End Sub

编辑:我在以下行中收到 VBA 错误:

LR = Range("NAME" & Rows.Count).End(xlUp).Row
4

2 回答 2

6

正如其他人在上述评论中提到的那样,您的陈述

LR = Range("NAME" & Rows.Count).End(xlUp).Row

并且,

Len(Range("NAME" & i).Value) 

只是在您给定的程序中对 VBA 没有任何意义,因为它们相当于说。

Range(Name81).Value '81 is a random number

除非您的工作簿中有一个名为 Name81(或任何其他数字)的已定义名称,否则该代码将产生运行时错误。

我认为这会让你想要你想要的:

Sub Macro2()

' Macro to delete rows if there are less than 4 in the NAME column

    Dim LR As Long, i As Long, lngCol as Long

    lngCol = Rows(1).Find("NAME",lookat:=xlWhole).Column 'assumes there will always be a column with "NAME" in row 1

    Application.ScreenUpdating = False


    LR = Cells(Rows.Count, lngCol).End(xlUp).Row

    For i = LR To 1 Step -1

        If Len(Cells(i, lngCol).Value) < 4 Then Rows(i).Delete

    Next i

    Application.ScreenUpdating = True

End Sub
于 2012-06-27T15:08:54.973 回答
0

对于下面的答案。如何编辑代码以使行删除仅适用于某一行及以下?IE。如果这应该从第 4 行开始运行。

子宏2()

' 如果 NAME 列中少于 4 行,则删除行的宏

Dim LR As Long, i As Long, lngCol as Long

lngCol = Rows(1).Find("NAME",lookat:=xlWhole).Column 'assumes there will always be a column with "NAME" in row 1

Application.ScreenUpdating = False


LR = Cells(Rows.Count, lngCol).End(xlUp).Row

For i = LR To 1 Step -1

    If Len(Cells(i, lngCol).Value) < 4 Then Rows(i).Delete

Next i

Application.ScreenUpdating = True

结束子

于 2021-09-10T20:51:08.180 回答