我使用以下代码尝试在特定“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
答案 0 :(得分:5)
正如其他人在上述评论中提到的,你的陈述
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