VBA Excel自动筛选错误
尝试在vba中自动筛选时出现以下错误: 调用的对象已与其客户端断开连接 所以我要做的是自动过滤,搜索空白,删除行。有人能帮忙吗 我尝试过在线提供的标准解决方案,例如option explicit等,但没有效果VBA Excel自动筛选错误,vba,excel,Vba,Excel,尝试在vba中自动筛选时出现以下错误: 调用的对象已与其客户端断开连接 所以我要做的是自动过滤,搜索空白,删除行。有人能帮忙吗 我尝试过在线提供的标准解决方案,例如option explicit等,但没有效果 数据: 代码: 由于Worksheets()需要工作表的名称,如“Sheet1”,请使用工作表(1)。 为什么只使用一次就创建变量ws和rng 我运行了这个,它删除了A列中没有数据的行 Private Sub Worksheet_Change() Dim lngLas
数据:
代码: 由于Worksheets()需要工作表的名称,如“Sheet1”,请使用工作表(1)。 为什么只使用一次就创建变量ws和rng 我运行了这个,它删除了A列中没有数据的行
Private Sub Worksheet_Change()
Dim lngLastRow As Long
Dim lngLastRowD As Long
Application.ScreenUpdating = False
'Concatenate the Row A and B
lngLastRow = Cells(Rows.Count, "A").End(xlUp).Row
sheets(1).Range("D2:D" & lngLastRow).Value = Evaluate("=A2:A" & lngLastRow & "&""""&" & "B2:B" & lngLastRow)
lngLastRowD = Worksheets(1).Cells(Rows.Count, "D").End(xlUp).Row
With sheets(1).Range("A2:A" & lngLastRowD)
.AutoFilter field:=1, Criteria1:=""
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
sheets(1).AutoFilterMode = False
Application.ScreenUpdating = True
Sheets(1).Range("A2").Select
End Sub
最后,我从另一个角度重新审视这个问题:
Dim i As Integer, counter As Integer
i = 2
For counter = 1 To lngLastRowD
If Worksheets(1).Range("A2:A" & lngLastRowD).Cells(i) = "" And Worksheets(1).Range("D2:D" & lngLastRowD).Cells(i) <> "" Then
Worksheets(1).Range("A2:A" & lngLastRowD).Range("A" & i & ":D" & lngLastRowD).Select
Selection.Delete
GoTo TheEND
Else
i = i + 1
Debug.Print "i is " & i
End If
Next
Dim i为整数,计数器为整数
i=2
对于计数器=1至lngLastRowD
如果工作表(1)范围(“A2:A”和lngLastRowD.Cells(i)=”和工作表(1)范围(“D2:D”和lngLastRowD.Cells(i)”,则
工作表(1).范围(“A2:A”和lngLastRowD).范围(“A”和i&“:D”和lngLastRowD).选择
选择。删除
转到终点
其他的
i=i+1
调试。打印“i是”&i
如果结束
下一个
下载是一个exe文件,除非您在此处发布代码,否则将被否决。我怀疑主要问题是您正在使用工作表更改事件。这个重要的操作,也改变了工作表,应该只需点击按钮就可以运行。@Steven Martin,它不是exe…因此Portland Runner用同一个工作簿编辑了我的文章。它是exe-你应该在post yourselfHi中包含代码,谢谢你的文章。然而,我仍然得到与您的代码相同的错误。
Dim i As Integer, counter As Integer
i = 2
For counter = 1 To lngLastRowD
If Worksheets(1).Range("A2:A" & lngLastRowD).Cells(i) = "" And Worksheets(1).Range("D2:D" & lngLastRowD).Cells(i) <> "" Then
Worksheets(1).Range("A2:A" & lngLastRowD).Range("A" & i & ":D" & lngLastRowD).Select
Selection.Delete
GoTo TheEND
Else
i = i + 1
Debug.Print "i is " & i
End If
Next