Jon*_*nny 0 excel vba excel-vba
我正在使用以下代码尝试删除整个行,当它在特定的"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
Run Code Online (Sandbox Code Playgroud)
编辑:我在以下行中收到VBA错误:
LR = Range("NAME" & Rows.Count).End(xlUp).Row
Run Code Online (Sandbox Code Playgroud)
正如其他人在上述评论中提到的那样,你的陈述
LR = Range("NAME" & Rows.Count).End(xlUp).Row
Run Code Online (Sandbox Code Playgroud)
并且,
Len(Range("NAME" & i).Value)
Run Code Online (Sandbox Code Playgroud)
在给定的程序中对VBA没有任何意义,因为它们等同于说.
Range(Name81).Value '81 is a random number
Run Code Online (Sandbox Code Playgroud)
除非您的工作簿中有一个名为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
Run Code Online (Sandbox Code Playgroud)